从子类1调用超类构造函数的C++规则是什么?
例如,我知道在Java中,你必须将它作为子类构造函数的第一行(如果不这样做,则假定对no-arg超级构造函数的隐式调用 - 如果缺少则会给出编译错误) .
我的问题受到 Thomas Cormen 教授对其Quora answer $的第二条评论的影响。
他说构造函数执行以下三个任务:
为对象分配内存。
初始化对象的实例变量,例如,通过在 Python 中隐式调用init。(我还强调init方法不应该初始化一些,而是所有的实例变量。)
返回对象的引用(即地址)。
但是,C++ *的MSDN 文档说它是执行此操作的运算符:new
从自由存储中为类型名称的对象或对象数组分配内存,并返回指向该对象的适当类型的非零指针。
我的问题是,谁是对的?或者,是否还有更多的东西,也许就像new操作员总是调用构造函数一样,正如帖子中的评论所建议的那样?
谢谢。
$ 不幸的是,Quora 没有复制评论链接的选项——我只能为答案这样做。
* 虽然我说的是 C++,但我认为对于 Java 和 C# 等其他语言也是如此(虽然我不是 100% 确定)。