看第一堂课:
class A
{
public:
int x;
A(int v) { x=v; }
};
另外,看看B级(我使用了继承)
class B : public A //Inheritance{
public:
B(int v) :A(v) {y=v; }
int y;
};
现在你能解释一下我们使用:A (v)
的原因吗?我知道初始化列表可用于初始化成员变量,但是......构造函数?! 。
我认为有一些关于初始化程序的东西,我不知道,你能给我一个阅读它的好地方吗?
答案 0 :(得分:3)
现在您可以解释为什么我们使用Child(int v):Parent(v)
因为这是在C ++中只有这样的构造函数时初始化超类的方法。
当我删除它时程序给我一个编译错误
因为你会隐式调用构造函数settings.py
,没有参数,这是不存在的,因为你的未说明的编译错误无疑会说明。
答案 1 :(得分:0)
您的程序格式错误。
根据class.ctor/8:
如果对象的默认构造函数,则程序格式错误 隐式使用,
constructor
不可访问
您定义Parent(int)
隐式定义的默认构造函数Parent()
的那一刻已删除。
因此,您需要显式调用用户定义的构造函数。
Child(int v):Parent (v) { }