gpt4 book ai didi

c++ - 为什么不使用范围解析运算符调用基类构造函数

转载 作者:太空宇宙 更新时间:2023-11-04 16:09:06 26 4
gpt4 key购买 nike

在这里,我继承了一个类并尝试使用范围解析运算符调用基类构造函数,但它显示错误。即使我们可以使用相同的方法访问成员函数 className::Fun(); 为什么不使用构造函数?

class Base{
public:
Base(){
cout << "A Constructor\n\n";
}
};
class Derived:public Base{
public:
Derived(){
Base::Base();
}
};

我知道我可以通过 Base(); 调用基础构造函数但是 Base::Base(); 背后的逻辑是什么不允许这样做。

我一直担心发布的问题可能是重复的,我在找不到答案后发布,如果我仍然发布重复的问题,请帮助我如何搜索我的问题是否在 stackoverflow 上可用。

最佳答案

以下代码:

    Derived(){
Base::Base();
}

在类的构造函数中构造一个临时的 Base 并丢弃它。 Base::Base(); 行没有初始化 DerivedBase 部分。

上面的代码等价于:

    Derived() : Base() {
// ^^^ This initializes the Base part of Derived.
Base::Base();
}

你需要的只是:

    Derived() {}

延伸阅读

Constructors and member initializer lists
Understanding class object construction

关于c++ - 为什么不使用范围解析运算符调用基类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30715932/

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