现在的位置: 首页 > 综合 > 正文

C++构造函数初始化列表

2014年01月10日 ⁄ 综合 ⁄ 共 558字 ⁄ 字号 评论关闭

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

 

抱歉!评论已关闭.