Joh*_*ohm 5 c++ constructor multiple-inheritance
考虑一个继承自Foo和Baz的Waldo类,即:
class Waldo : public Foo, public Baz {
...
};
Run Code Online (Sandbox Code Playgroud)
当我创建一个新的Waldo实例时:
Waldo *w = new Waldo;
Run Code Online (Sandbox Code Playgroud)
Foo和Baz构造函数会被调用吗?如果默认情况下没有调用它们,那么在类声明或Waldo构造函数的声明/定义中是否有一种简单的方法可以强制它们被调用?
(看起来我可能正在尝试进行构造函数链接,据说C++不这样做.我不确定.)
我正在尝试做的是"注释"各种类声明,其中注释导致(除此之外)注释类的实例被链接到由注释类维护的列表中.例如,这让我可以使用Baz特性遍历所有对象的列表,对它们应用某个操作,而不必担心我是否记得将实例添加到具有Baz特性的对象列表中,因为构造函数自动完成它.
类的所有成员的构造函数按照它们在类中声明的顺序调用。
派生类的默认构造函数默认调用基类的构造函数。如果它们需要参数,则需要显式调用它们,否则这是一个错误......
class Employee {
private:
//
public:
Employee();
//...
};
class Manager: public Employee {
private:
short level;
public:
Manager(): Employee(), level() {} // This is the default constructor, it calls Employee().
// The definition is equivalent to default constructor of Manager..
//...
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
499 次 |
| 最近记录: |