gpt4 book ai didi

c++ - 编译器何时为派生类生成默认构造函数

转载 作者:可可西里 更新时间:2023-11-01 18:21:18 35 4
gpt4 key购买 nike

这是我的观察:

编译器不会为基类定义了构造函数的派生类生成默认构造函数。

// example
class ClassCBase
{
public:
ClassCBase(int i) {}
};

class ClassC : public ClassCBase
{

};

int main()
{
ClassC c; // error C2512: 'ClassC' :
// no appropriate default constructor available
}

Q1>我的理解正确吗?

Q2> 是否存在编译器不会为派生类生成默认构造函数的其他情况?

最佳答案

如果父类(super class)没有默认构造函数,编译器将不会生成默认构造函数。换句话说,由于父类(super class)构造函数需要一个参数,并且不能指望编译器知道合适的默认值是什么,编译器将无法生成有用的默认构造函数。但是,如果您向 ClassCBase 添加了一个无参构造函数,ClassC 将可以按原样使用。

关于c++ - 编译器何时为派生类生成默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7053966/

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