1.类里面的任何成员变量在定义时是不能初始化的。
2.一般的数据成员可以在构造函数中初始化(如果不初始化,成员的值是随机的、不可预测)。
3.const数据成员必须在构造函数的初始化列表中初始化。
4.static要在类的定义外面初始化(类成员)。
5.数组成员是不能在初始化列表里初始化的。
6.不能给数组指定明显的初始化。
7.类的成员初始化顺序与成员变量在构造函数初始化列表中的位置先后顺序无关,只与成员变量在类中定义的先后顺序有关。
(3和5 => c++类里面不能定义const数组成员)
//c++类里面不能定义const数组成员
#include <iostream>
using namespace std;
class TEST
{
public:
const int testVec[10];
};
int main(int argc, char** argv)
{
TEST test;
return 0;
}
//编译报错
xudongsong@sysdev:~$ g++ -o const_vector_mem const_vector_mem.cpp
const_vector_mem.cpp: In function ‘int main(int, char**)’:
const_vector_mem.cpp:12: error: structure ‘test’ with uninitialized const members
//验证数据成员初始化顺序
#include <iostream>
using namespace std;
class TEST
{
public:
TEST(int arg) : b(arg), a(b) {};
void show()
{
cout << "a=" << a << "\tb=" << b << endl;
}
private:
int a;
int b;
};
int main(int argc, char** argv)
{
TEST test(20);
test.show();
return 0;
}
//输出结果显示a(b)在b(arg)之前执行
xudongsong@sysdev:~$ g++ -o member_initialize member_initialize.cpp ; ./member_initialize
a=32767 b=20