在去说必须在类初始化列表中初始化的情况前,我们需要明确一些简单的知识点:
1、const在c++中代表的是 “一个有类型描述的常量”,也就是说它的值是不可以改变的。
2、const类型只能初始化,不能进行赋值
3、构造器函数体内,只能赋值而不是初始化。
4、const类型一般都是在构造函数的初始化列表中进行初始化
c++必须在类初始化列表中初始化的几种情况
1、当为const类型的时候
2、当为引用类型的时候
3、当存在继承的时候,基类中没有默认构造器,派生类中必须在初始化列表中进行初始化
class TestA
{
public:
TestA(int a) : val(a) {}
private:
int val;
};
class TestSun : public TestA
{
public:
TestSun(int v) : p(v), TestA(v) {}
void print_val() { std::cout << "hello:" << p << std::endl;}
private:
int p;
};