gpt4 book ai didi

c++ - 为什么不继承 C++ 构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:41 24 4
gpt4 key购买 nike

为什么在此代码中需要 Child 传递构造函数?我认为它不会,但是当我删除它时编译器(gcc 和 VS2010)会提示。有优雅的解决方法吗?必须将此垫片插入子类似乎毫无意义。

class Parent
{
public:
Parent(int i) { }
};

class Child : public Parent
{
public:
Child(int i) : Parent(i) { }
};

int main()
{
Child child(4);
return 0;
}

最佳答案

因为以下是完全有效的:

class Parent
{
public:
Parent(int i) { }
};

class Child : public Parent
{
public:
Child() : Parent(42) { }
};

编译器如何猜测您是否希望派生的子代具有转发的构造函数?并且在多重继承的情况下,两种类型的构造函数集可能不匹配;转发基类A的构造函数时,应该调用基类B的哪个构造函数?

从技术上讲,我想语言设计者可能会说,如果该类型只有一个基类并且没有显式构造函数,则转发所有父构造函数。然而,这会产生相反的问题:如果一个基类有多个构造函数,包括一个默认构造函数,而子类希望只允许使用默认构造函数,那么现在必须明确指定。

关于c++ - 为什么不继承 C++ 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6710174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com