c++ primer买了好久没怎么看,以前写类的时候很少用这个构造函数初始化列表,基本是使用的构造函数体内赋值的形式。还是得多看书,多实践
#include<iostream> using namespace std; class A{ public: A(int i):num(i){}; private: int num; }; //类的所有成员变量都必须在构造函数中初始化 class B{ public: //B(int j,A a); B(int j,A a,int ii):mem(a),n(j),i(ii),ri(ii){}; //B(int j,int ii); //B(int j,int ii):i(j),ri(ii){}; private: A mem; int n; const int i; int &ri; }; // A没有默认构造函数,不能对B的成员变量A赋值操作 // 只能使用构造函数初始化列表 //因为在赋值语句之前,要初始化mem成员 //而mem成员没有默认构造函数,编译器就不知该如何初始化 // B::B(int j,A a){ // mem=a; // n=j; // // } //const或引用类型的成员必须在构造函数初始化列表中进行初始化 // B::B(int j,int ii){ // i=j; // ri=ii; // } int main(){ A a(5); B(2,a,5); return 0; }