多级继承
Multi level inheritance
我正在从Java转学,我正在尝试学习如何用C++编写好的代码。
根据抽象类的多级继承,我有一个问题
我在 Java 中有这个伪代码,我想使用类接口定义类似的结构,C++与所有构造函数和析构函数。
abstract class Node {
public abstract void addChild(Node child);
}
abstract class StmtNode extends Node {
}
class WhileNode extends StmtNode {
}
我的问题是:你能帮我定义这样的类吗?
@edit目前我有以下课程:
class Node {
public:
explicit Node();
virtual ~Node() = 0;
virtual void addChild(Node* child) = 0;
};
class StmtNode : public Node {
public:
explicit StmtNode();
virtual ~StmtNode() = 0;
virtual void addChild(Node* child) override;
};
class WhileNode : StmtNode {
public:
explicit WhileNode();
~WhileNode() override;
void addChild(Node* child) override;
};
他们正确吗?
没有必要将参数 less ctor 定义为 explicit
。因此,可以通过删除explicit Node();
关键字来简化explicit
;
不要忘记为纯虚拟销毁提供实现,否则代码中将出现未定义的行为。
inline Node::~Node() { }
inline StmtNode::~StmtNode() { }
由于Node
和StmtNode
具有纯虚函数并像interface
一样起作用,因此您可以将它们的ctors
定义为受保护。
无需使用override
关键字定义destruction
。
相关文章:
- C++ 多级虚拟继承编译问题
- 多级继承错误 C2280:"atttempting to reference a deleted function"
- C++虚函数的多级继承
- 多级继承程序代码的输出
- 多级继承
- 在多级继承中重写,中间派生类未覆盖函数
- 如果多级继承,如何使用虚拟关键字
- 多级继承C
- C++ 中的多级继承和调用基构造函数
- 为什么dynamic_cast返回具有多级继承的 null
- C++ 多级继承不起作用
- 在C 中的多级虚拟继承中受保护的构造函数
- 在多级继承中派生的虚拟基类会发生什么
- 虚拟基类在多级继承中有什么用
- C++多级继承
- 多级/多重继承期间的对象大小
- C++多级继承函数调用
- 虚拟函数未返回具有多级继承的派生类型
- 多级继承成员访问
- 多级继承和多态性