上代码 #include <iostream> using namespace std; class A { public: A(int v): j(v + 2), i(j) {} void print_val() { cout << "hello:" << i << " " << j << endl;} private: int i; int j; }; int main(int argc ,…
类成员的默认初始化顺序是按照声明顺序进行, 如果使用初始化列表初始化成员变量, 则必须按照成员变量的声明顺序进行; 否则, 在变量之间交替赋值时, 会产生, 未初始化的变量去赋值其他变量; 同时GCC, 也会发出警告, 如: 'class::m_xxx' will be initialized after [-Wreorder] 请看下面的代码: template<class t>class array {public:  array(int lowbound, int highbound);…
引子:我们知道,C++中类成员变量的初始化顺序与其在类中的声明顺序是有关的. 先看代码: class TestClass1 { public: TestClass1() { cout << "TestClass1()" << endl; } TestClass1(const TestClass1&) { cout << "TestClass1(const TestClass1&)" << endl; }…
c++类 用冒号初始化对象(成员初始化列表) 成员初始化的顺序不同于它们在构造函数初始化列表中的顺序,而与它们在类定义中的顺序相同 #include<iostream> ; using namespace std; class Cbox{ int a ; int b ; int c ; public: int g ; Cbox():a(n++),c(n++),b(n++){} ~Cbox(){cout<<a<<" "<<b<<…
最近有点忙,先发一篇我公众号的文章,以下是原文. /********原文********/ 最近很多学习Qt的小伙伴在我的微信公众号私信我,该如何理解下面段代码的第二行QWidget(parent) 1 Widget::Widget(QWidget *parent) : 2 QWidget(parent) 3 { 4 } 为了统一回复大家,小豆君特意写了这篇文章,方便初学者们学习. 在讲解原因之前,先请大家看下面的一个例子 #include <iostream> using namespace…
C++在类的构造函数中,可以两种方式初始化成员数据(data member). 1,在构造函数的实现中,初始类的成员数据.诸如: class point{private: int x,y;public: point(int m=0,int n=0) {  x=m;  y=n; }  int GetX() {  return x; } int GetY() {  return y; }}; 2,还可以定义初始化成员列表(Initializer list)来初始化成员数据(data member).…
C++在类的构造函数中,可以两种方式初始化成员数据(data member). 1,在构造函数的实现中,初始类的成员数据.诸如: class point{private: int x,y;public: point(int m=0,int n=0) {  x=m;  y=n; }  int GetX() {  return x; } int GetY() {  return y; }}; 2,还可以定义初始化成员列表(Initializer list)来初始化成员数据(data member).…
转自:http://www.cnblogs.com/kaituorensheng/p/3477630.html 1. 类成员为const类型 2. 类成员为引用类型 #include <iostream> using namespace std; class A { public: A(int &v) : i(v), p(v), j(v) {} void print_val() { cout << "hello:" << i <<…
构造函数与其函数体之间可以添加初始化列表,能对某些对象进行初始化.格式为 类名() : 变量1(参数1),变量2(参数2) { } 1.     父类的对象的构造必须在初始化列表中,如: 子类名(): 父类名(对象参数){} 2.     类中声明为const的成员的初始化必须在初始化列表中,如: class A { private: const int a; const int &r; A(int i); } A::A(int i) :a(i),r(a){} 3.     普通的类数据成员也可…
http://blog.csdn.net/huangcailian/article/details/25958967 一.成员初始化整体顺序 1.成员赋值初始化先于构造函数: 2.成员赋值初始先从子类再到基类: 3.构造函数初始化先从基类再到子类: 4.静态成员初始化优先于实例成员初始化: 二.对类型静态成员构造的大致过程 1.分配静态成员的内存空间,此时空间存储数据为0: 2.执行类的静态成员的初始化语句: 3.执行类的静态构造函数. 三.对类型实例成员构造的大致过程 1.分配实例成员的内存空…