在C++继承中,派生类如何禁用基类的某些元素(数据或函数)?

dee*_*een 2 c++ inheritance

例如,假设现在我们有两个类,Tree(基类)和BinaryTree(派生类).类Tree具有数据子项和函数getChildren().

class Tree {
public:
    vector<int> getChildren();
    ...
private:
    vector<int> children;
    ...
};
Run Code Online (Sandbox Code Playgroud)

派生类具有数据leftChild和rightChild,以及getLeftChild()和getRightChild()的函数.

class BinaryTree : public Tree {
public:
    int getLeftChild();
    int getRightChild();
    ...
private:
    int leftChild;
    int rightChild;
    ...
};
Run Code Online (Sandbox Code Playgroud)

当然,数据子和函数getChildren()不是我们在派生类中想要的.我们可能根本就不使用它们但它们仍然存在.那么如何在派生类中禁用这些元素呢?

谢谢

Ray*_*nda 6

您面临的主要问题是概念,而不是编程.

在一个Tree你通过电话获得孩子getChildren(),你可以使用相同BinaryTree的差异是,BinaryTree::getChildren只会返回两个孩子,右,左.

如果a BinaryTree是(专业)Tree完全没问题,你有一个专门的版本GetChildren.

如果您不希望基类成员存在于派生类中,请将它们作为私有,如果您希望它们是公共的,那么您必须考虑使用组合而不是继承.