c++ - C++可以初始化基类的基类吗?

标签 c++ inheritance

我正在尝试以下代码段,

#include <string>

class A {
protected:
    std::string name;
public:
    A(std::string name):name(){}
};

class B: public A {
public:
    B() : A("B") {}
};

class C: public B {
public:
    C(): A("C"){} //<-- this is not allowed, but I want to make C has its own name
};
显然,这是不允许的,实现此目标的最佳方法是什么?

最佳答案

重写B的构造函数

B(const std::string& name = "B") : A(name) {}
是一种方式。在这里,我为其配备了默认值,因此它仍然充当默认构造函数。

关于c++ - C++可以初始化基类的基类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63704567/

相关文章:

c++ - 覆盖方法错误 C++

javascript - 如何在javascript中将init参数传递给基类

c++ - 指向基类的指针和指向派生对象的指针的内存布局差异

javascript - Javascript 中的对象类型

c++ - libc++ 的 unordered_set.reserve 的 bucket_count

c++ - C++专家应该很容易的编译错误

android - 尽管已正确保存,但文件没有出现在 SD 卡上;出现在设备上的文件资源管理器中

C# 正则表达式到 C++ boost::regex

c++ - 混合 Objective-C 和 C++ 代码

java - 编译错误: constructor A in class A cannot be applied to given types