我有一个问题,关于如何为从基类的构造函数继承的派生类的构造函数使用初始化列表。
这是有效的代码:
class base {
public:
base():x(0) {}
base(int a):x(a) {}
private:
int x;
};
class derived : public base {
public:
derived():base():y(0) { y=0; }
derived(int a, int b):base(a) { y=b; }
private:
int y;
};
但是,我想直接使用成员初始化列表来初始化变量,这会导致错误:
class base {
public:
base():x(0) {}
base(int a):x(a) {}
private:
int x;
};
class derived : public base {
public:
//derived():base():y(0) {} //wrong
//derived(int a, int b):base(a):y(b) {} //wrong
derived():base(), y(0) {} // corrected
derived(int a, int b): base(a), y(b) {} //corrected
private:
int y;
};
从另一个构造函数继承的构造函数使用初始化列表的正确语法是什么?
谢谢:)
最佳答案
正如 Dieter 所指出的,您可以轻松地在一个构造函数中包含多个初始化器,它们只需用逗号 (,
) 而非列 (:
) 分隔即可。
你派生的类应该是:
class derived : public base {
public:
derived():base(),y(0) {}
derived(int a, int b):base(a),y(b) {}
private:
int y;
};
关于c++ - 使用具有继承性的构造函数基类和成员初始值设定项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27766281/