例如,假设现在我们有两个类,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()不是我们在派生类中想要的.我们可能根本就不使用它们但它们仍然存在.那么如何在派生类中禁用这些元素呢?
谢谢
您面临的主要问题是概念,而不是编程.
在一个Tree你通过电话获得孩子getChildren(),你可以使用相同BinaryTree的差异是,BinaryTree::getChildren只会返回两个孩子,右,左.
如果a BinaryTree是(专业)Tree完全没问题,你有一个专门的版本GetChildren.
如果您不希望基类成员存在于派生类中,请将它们作为私有,如果您希望它们是公共的,那么您必须考虑使用组合而不是继承.