初始化列表的作用
来源:互联网 发布:java开发接私活 编辑:程序博客网 时间:2024/05/17 06:01
我纠结的问题都在primer上有很好的解答
之前突然想到,为什么要存在冒号这种初始化方法,在google被墙,没办法只能求助于度娘。。。
冒号这种初始化方法,也叫做,初始化列表,也就是变量初始化的时候调用的
意味着,在一个类当中,一个成员变量只能在初始化赋值。
比如: const, 比如引用&。
举个例子:
class A{public: A(i) { a = i; b = i; c = i; }private: int a; const int b; int &c;};
这样是不合法的, 因为b, c只能在初始化时赋值。
所以,只能如此初始化:
class A{public: A(int i):a(i), b(i), c(i){}private: int a; const int b; int &c;};
class A{public:A():b(a-1), a(b-1){cout<<b<<endl;cout<<a<<endl;};private:int a;int b;};也就是说,a和b的值分别是多少?
1
-858993461
答案就是,初始化列表里的顺序,与初始化顺序无关
这里首先定义的是a,所以a先初始化为b - 1即 -858993460 - 1,-858993461
而b是第二个定义的,所以后初始化b为a- 1即-858993461,为-858993462
如果,没有必要的情况下,还是少用初始化列表,尽量在构造函数中顺序的定义。
0 0
- 初始化列表的作用
- 初始化列表的作用域
- C++成员初始化列表 的作用
- C++11初始化列表与参数列表的作用
- c++构造函数中初始化列表的作用和机制
- 构造函数的成员初始化列表有什么作用?
- 初始化列表的初始化顺序
- 类的初始化列表
- 类的初始化列表
- 初始化列表的使用
- 初始化列表的问题
- 初始化列表的使用
- C++的初始化列表
- c++的初始化列表
- 类的初始化列表
- c++的初始化列表
- 初始化列表成员变量的初始化
- C++的类初始化列表
- 利用消息通知中心CCNotificationCenter来传递不同层之间的数据
- WF事件驱动(1)
- linux 下 apache启动、停止、重启命令
- 【算法导论学习-18】queue的数组实现
- 同步的本质 java内存模型 happen before order
- 初始化列表的作用
- 【Unity Shaders】使用CgInclude让你的Shader模块化——Unity内置的CgInclude文件
- hdoj 3572 Task Schedule【最大流】
- HDU 1829 A Bug's Life 并查集
- poj 1491 gcd(求PI的近似值)
- 【坑】在js代码中误用保留关键字
- HDU 1325 Is It A Tree? 并查集
- Linux关机命令详解
- UVa10986_Sending email(最短路)(小白书图论专题)