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;
}
1201

被折叠的 条评论
为什么被折叠?



