1#include<iostream>23usingnamespacestd;45classStudent1 {6public:7inta;8intb;9voidfprint(){10cout<<"a ="<<a<<""<<"b ="<<b<<endl;11}1213Student1(inti):b(i),a(b){ }//异常顺序:发现a的值为0 b的值为2 说明初始化仅仅对b有效果,对a没有起到初始化作用14//Student1(int i):a(...
1#include<iostream>23usingnamespacestd;45classStudent1 {6public:7inta;8intb;9voidfprint(){10cout<<"a ="<<a<<""<<"b ="<<b<<endl;11}1213Student1(inti):b(i),a(b){ }//异常顺序:发现a的值为0 b的值为2 说明初始化仅仅对b有效果,对a没有起到初始化作用14//Student1(int i):a(...
(1)C++中提供了初始化列表,可以对类的成员变量进行初始化 (2)语法规则: ClassName::ClassName():m1(v1), m2(v2,v3),m3(v3) { //其它初始化操作 } 1. 2. 3. 4. (3)注意事项 成员的初始化顺序与成员的声明顺序相同。而与初始化列表中的位置无关 ②初始化列表先于构造函数的函数体执行 【编程实验...
C++ 初始化列表顺序 1. 什么是C++的初始化列表? C++的初始化列表是在构造函数体内(但在任何显式初始化之前)用于初始化类成员的一种机制。使用初始化列表可以避免在构造函数体内进行赋值操作,这对于某些类型(如引用、const成员、没有默认构造函数的类成员)是必需的,同时也可能带来性能上的优化。
成员是按照他们在类中出现的顺序进行初始化的,而不是按照他们在初始化列表出现的顺序初始化的,看代码:struct foo{int i ;int j ;foo(int x):i(x), j(i){}; // ok, 先初始化i,后初始化j};再看下面的代码:struct foo{int i ;int j ;foo(int x):j(x), i(j){} // i值...
结果一运行,机子就慢了,打开任务管理器,占内存超大。后来想起来初始化列表是按照成员变量的声明顺序初始化的,所以在构造函数里_data数组先被初始化,这时_size没被初始化,即_size还是个随机值,估计随机的很大,呵呵,比方说_size为1234567,于是就申请了1234567的内存。。。 于是...
记住:初始化列表中成员列出的顺序和成员在类内声明的顺序一致。 using namespace std; class base { private: int m_i; int m_j; public: base(int i) : m_j(i), m_i(m_j) {} base() : m_j(0), m_i(m_j) {} int get_i() { return m_i; } ...
在一个类里,初始化的顺序是由变量在类内的定义顺序决定的。即使变量定义大量遍布于方法定义的中间, ...
structA{Xx;Yy;Zz;A():z(),y(),x(){}};这段代码中,虽然初始化列表中的顺序是 z y x,但...
inti;//声明顺序是先i,后j,故初始化列表中,会先初始化i,在初始化j intj; public: x(int tem): j(tem),i(j){}//看起来是先初始化j,然后初始化i,其实恰恰相反,先用未初始化的j来初始化i,虽然编译器不会提示你什么,但是j未初始化它便由计算机随即分配的内存存储,它的值也是随即的,这个值可能不是你...