c ++返回同一个类

时间:2015-12-01 22:00:30

标签: c++ oop inheritance

我有这样的事情:

class BinaryTree
{
    ...
    virtual BinaryTree* GetLeft()
    {
        return this->root->left;
    }
    ...
}

class BinarySearchTree : public BinaryTree
{
    ...
}

我的问题是,当我致电mySearchTree->GetLeft()时,我会收到BinaryTree类型的对象,而不是BinarySearchTree

有没有办法定义一个返回类型=包含类的方法?或者我应该在任何子类中重新定义GetLeft吗?

1 个答案:

答案 0 :(得分:0)

由于GetLeft()定义了BinaryTree,它将始终返回BinaryTree。但是,您可以安全地向下转换为BinarySearchTree。在进行此操作之前,您应该测试这是否安全。

另一个想法:为什么你需要这样做?也许这表明您的BinaryTree API并不是您想要的。