初始化列表

学习:类和对象——初始化列表和内部类

痞子三分冷 提交于 2019-12-04 12:09:32
初始化列表: 作用: C++提供了初始化列表语法,用来初始化属性 自己感觉比较好理解,就简单了几行代码吧,但是在 类中存储类 的时候使用还是需要注意下的 一个简单的示例 #include<iostream> #include<string> using namespace std; class Person{ public: Person() { cout << "无参构造" << endl; } Person(int a, int b,int c): m_a(a),m_b(b),m_c(c) { cout << "有参构造" << endl; cout << m_a << m_b << m_c << endl; } private: int m_a; int m_b; int m_c; }; int main() { Person p1(1, 2, 3); system("pause"); return 0; } 类对象作为类成员: 刚面提到的注意点其实也就是在这里了 C++类中的成员可以是另一个类的对象,我们称该成员为 对象成员 这里代码的话直接copy老师的了哈 这里需要注意的是类中包含类的时候 构造函数 和 析构函数 调用的顺序,先调用 内部类 的构造方法然后再调用 外部类 的构造方法,然后对于析构方法的调用顺序是相反的,先是 外部类 析构方法调用,然后再是 内部类

C++_学习笔记

旧时模样 提交于 2019-12-04 08:19:21
C++ 面向对象特征:封装——抽象——继承——多态 https://www.runoob.com/ <命名空间> —————————————————————————————————————————————————————————————————————————————————————————— #include <iostream> 1 using namespace std; 2 using std::变量; 3 std::变量; cout cin 定义: namespace spaceA{ int a = 10; namespace spaceB{ struct std{ int age ; } } } 使用: using namespace spaceA; using spaceA::a; spaceA::a; <bool增强> —————————————————————————————————————————————————————————————————————————————————————————— bool a = true ; 1 bool b = false; 0 sizeof(a) = 一个字节; <三目增强> ———————————————————————————————————————————————————————————————————————————

PHP类

不问归期 提交于 2019-12-04 05:59:13
类概念: 类参考: https://www.runoob.com/php/php-oop.html 类 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。 对象 − 是类的实例。 成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。 成员函数 − 定义在类的内部,可用于访问对象的数据。 继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。 父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。 子类 − 一个类继承其他类称为子类,也可称为派生类。 多态 − 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。 重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。 抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的

第20课.初始化列表

孤者浪人 提交于 2019-12-04 00:52:23
1.类成员的初始化 c++中提供了初始化列表对 类 成员变量进行初始化 语法规则: 使用在构造函数的定之后,函数体之前 ClassNam::ClassName() : m1(v1), m2(v1, v2), m3(v3) //初始化列表 { //some other initialiaze operatiion } 注意事项: a.成员的初始化顺序与成员的声明顺序相同; b.成员的初始化顺序与初始化列表中的位置无关;(初始化列表中的先后顺序无法决定,成员的初始化顺序。成员的初始化顺序又成员定义的先后顺序决定。即先定义的先初始化,后定义的后初始化) c.初始化列表先于构造函数的函数体执行; #include <stdio.h> class Value { private: int mi; public: Value(int i) { printf("i = %d\n", i); mi = i; } int getI() { return mi; } }; class Test { private: Value m2; Value m3; Value m1; //这里定义了3个变量。定义的顺序2,3,1 public: Test() : m1(1), m2(2), m3(3) //这里调用Value实现初始化,列表顺序1,2,3 { printf("Test::Test()\n");

npm install模块时 报错:not such file or directory

谁说我不能喝 提交于 2019-12-03 13:37:34
通过报错信息可以知道,是因为缺少 package.json 这个文件。 解决方法: 首先,初始化项目,一路回车就行 npm init -f 接着安装依赖 npm install formidable --save 补充: -f 表示force的意思,不加这个,npm会让你输入一堆信息,比如name、version之类,如果只是做做实验小demo,直接 -f ,npm帮你初始化package.json,并填充各种默认值,省事。 --save 表示将安装的包加入依赖列表的意思,可以看下package.json 里的 dependencies 字段。后面再运行 npm install ,就会把所有依赖安装下来。如果不加 --save ,什么都不会安装。 来源: https://www.cnblogs.com/ring1992/p/11797451.html

指针数组的初始化

非 Y 不嫁゛ 提交于 2019-12-03 07:42:28
指针数组的初始化:   指针数组的初始化语法与其他类型对象的初始化语法类似,下面是一个例子: char *month_name(int n) {   static char *name[] = {     "Illegal month","January","February","March","April","May","June","july",     "August","September","October","November","December"     };   return (n < 1 || n > 12) ? name[0] : name[n]; } 其中name是一个一维数组,数组的元素为字符指针。name数组的初始化通过一个字符串列表实现, 列表中的每个字符串赋值给数组相应位置的元素。第i个字符串的所有字符存储在存储器的某个位置, 指向它的指针存储在name[i]中。由于上述声明没有指明name的长度,因此编译器会对初值个数进行 统计,并将这一准确数字填入数组的长度。 来源: https://www.cnblogs.com/TheFly/p/11783610.html

深入理解类

匿名 (未验证) 提交于 2019-12-03 00:43:02
类成员 成员修饰符的顺序 [特性] [修饰符] [核心声明] a)修饰符:必须放在核心声明之前,如果有多个修饰符可以是任意顺序 b)特性:必须放在核心声明和修饰符之前,如果有多个特性可以任意顺序 实例成员(是类的每个实例拥有自己各个类成员的副本) 静态字段(静态字段被类的所有实例共享) 静态函数成员 a)静态函数成员不能访问实例成员,然而,它们能访问其他静态成员 成员常量 a)用于初始化成员常量的值在编译时必须是可计算的,而且通常是一个预定义简单类型或者由它们组成的表达式 b)不能在成员常量声明以后给它赋值 常量与静态量 a)成员常量表现得像静态值,它们对类的每个实例都是"可见的",而且即使没有实例也可以使用 b)与真正的静态量不同,常量没有自己的存储位置,而是在编译时被编译器替换 c)虽然常量成员表现得像一个静态量,但不能将常量声明为static 属性 a)它是命名的类成员 b)它有类型 c)它可以被赋值和读取 d)它是一个函数成员 e)它不为数据存储分配空间 f)它执行代码 属性声明和访问器 set访问器 a)拥有一个单独的、隐式的值参,名称为value,与属性的类型相同 b)拥有一个返回类型void get访问器 a)没有参数 b)拥有一个与属性类型相同的返回类型 属性与公共字段 a)属性是函数型成员而不是数据成员,允许你处理输入和输出,而公共字段不行 b)属性可以只读或只写

C++11 列表初始化、序列生成器 Generator

匿名 (未验证) 提交于 2019-12-03 00:25:02
int a[] = {1,3,5,7,9}; std::for_each(std::begin < int > (a), std::end < int > (a), [ & ]( int n ) {cout << n ;}); //这样会把 13579 输出来。 二、 C++11扩大了初始化列表的适用范围,使其可用于所有内置类型和用户定义的类型。无论是初始化对象还是某些时候为对象赋新值,都可以使用这样一组由花括号括起来的初始值了。使用初始化列表时,可添加=,也可不添加。 //定义一个变量并初始化 int units_sold= 0 ; int units_sold( 0 ); int units_sold={ 0 }; //列表初始化 int units_sold{ 0 }; //列表初始化 当初始化列表用于内置类型的变量时,这种初始化形式有一个重要特点:如果我们使用列表初始化值存在丢失信息的风险,则编译器将报错: long double ld= 3.1415926536 ; int a={ld},b={ld}; //错误:转换未执行,因为存在丢失信息的风险 int c(ld),d=ld; //正确:转换执行,且确实丢失了部分值 三、 1. 问题: 2. 方案 3. 资源: 文章来源: C++11 列表初始化、序列生成器 Generator

C++中类中常规变量、const、static、static const(const static)成员变量的声明和初始化

匿名 (未验证) 提交于 2019-12-03 00:19:01
C++类有几种类型的数据成员:普通类型、常量(const)、静态(static)、静态常量(static const)。这里分别探讨以下他们在C++11之前和之后的初始化方式。 在C++11之前常规的数据成员变量只能在构造函数里和初始化列表里进行初始化。const类型的成员变量只能在初始化列表里并且必须在这里进行初始化。static类型只能在类外进行初始化。static const类型除了整型数可以在类内初始化,其他的只能在类外初始化。代码如下: class A { public : A (); ~A(); //int m_n1 = 10; // 错误 1 error C2864: “A::m_n1”: 只有静态常量整型数据成员才可以在类中初始化 int m_n2; int m_n3; //const int m_nConst_1 = 10; // 错误 3 error C2864: “A::m_nConst_1”: 只有静态常量整型数据成员才可以在类中初始化 const int m_nConst_2; const int m_nConst_3; const int m_nConst_4; // static int m_nStatic_1 = 10; // 错误 1 error C2864: “A::m_nStatic_1”: 只有静态常量整型数据成员才可以在类中初始化

C++11学习笔记(2)

匿名 (未验证) 提交于 2019-12-02 23:52:01
注:本人所有学习笔记多来自各种书籍原著,C++11学习笔记根据《C++Primer (第五版)》整理,仅供个人复习使用。 1.字面值常量 以0开头的整数代表八进制数,以0x或0X开头的代表十六进制数。整型字面值具体的数据类型由它的值和符号决定。默认情况下,十进制字面值是带符号数,八进制和十六进制字面值既可能是带符号的也可能是不带符合的。类型short没有对应的字面值。 字符串字面值的类型实际上是由常量字符构成的数组。编译器在每一个字符串的结尾处添加一个空字符(‘\0‘),因此,字符串字面值的实际长度要比它的内容多1.如果两个字符串字面值位置紧邻且仅由空格、缩进和换行符分隔,则它们实际上是一个整体。当书写的字符串字面值比较长,写在一行里不太合适时,就可以采取分开书写的方式。 有两类字符程序员不能直接使用:一类是不可打印的字符,如退格或其他控制字符,因为它们没有可视的图符;另一类是在C++语言中有特殊含义的字符。在这些情况下需要用到 转义序列: true和false是bool类型的字面值,nullptr是指针字面值。 2.变量 列表初始化是C++11新标准的一部分,具体长什么样子呢,就下面这个样子: int a{0}; 在现在,无论是初始化对象还是某些时候为对象赋新值,都可以使用这样一组花括号括起来的初始值了。当用于内置类型的变量时,这种初始化有一个重要特点