我一直在继承的背景下与构造函数的概念挣扎。这个混淆因为使用C + 11引入了这个主题的巨大变化(即基础构造函数可以被继承?)而变得更加复杂了。继承链是否创建构造函数调用链?
所以我的问题:
假设我不使用构造继承,但只是在我的派生类中定义一个新的构造,并基本构造仍然被调用?这似乎不应该,但我遇到了一些文件,说明这确实发生。此外,这是否意味着当你有一个继承链时,会有一系列的构造函数被调用?如果是这样,按什么顺序?基础派生之前,还是派生基础之前?
谢谢!
我一直在继承的背景下与构造函数的概念挣扎。这个混淆因为使用C + 11引入了这个主题的巨大变化(即基础构造函数可以被继承?)而变得更加复杂了。继承链是否创建构造函数调用链?
所以我的问题:
假设我不使用构造继承,但只是在我的派生类中定义一个新的构造,并基本构造仍然被调用?这似乎不应该,但我遇到了一些文件,说明这确实发生。此外,这是否意味着当你有一个继承链时,会有一系列的构造函数被调用?如果是这样,按什么顺序?基础派生之前,还是派生基础之前?
谢谢!
这里是为了:
这里的衍生实例化时实际发生的事情:
- 内存派生的预留(足够基准站和 衍生部分)
- 适当的Derived构造函数被称为
- Base对象首先使用适当的Base构造函数构造。如果未指定基础构造函数,则将使用默认的构造函数 。
- 初始化列表初始化变量
- 的构造函数体执行
- 控制返回给调用者
希望它能帮助。
除非你调用'super()',我相信答案是_no_。 –
@EricM。对于'super()',答案仍然是否定的,因为它不会编译 –
LOL!我知道它在java中工作...我是60%,也许70%确定它在C++中工作。 TIL。 –