C++中初始化成员变量有两种方式:一种是在构造函数体内对成员变量初始化;另一种则是初始化列表方式,就是跟在构造函数后面用于初始化指定成员变量的列表。两种初始化方式如下:
class Test {
public:
// 初始化列表初始化_mem成员变量
Test(int mem) : _mem(mem) {}
// 一般的构造函数
Test(int mem, int i) {
_mem = mem;
}
private:
int _mem;
};
1. 初始化列表
两种初始化方式有什么区别呢?对于内置类型如int、double等类型成员变量,这两种方式并没有太大区别。但对于自定义类型,则有很大的区别。
#include <iostream>
using namespace std;
class C1 {
public:
C1() {
cout << "in C1 ......" << endl;
}
C1(const C1&) {
cout << "in C1 & ......" << endl;
}
C1& operator = (const C1 &c1) {
cout << "in C1 = ......" << endl;
return *this;
}
~C1() {
cout << "out C1" << endl;
}
};
class C2 {
public:
C2(C1 c1) : _c1(c1) {
cout << "in C2 ......" << end