【问题标题】:is it possible to call a method in the base class from a derived class in c++?是否可以从 C++ 中的派生类调用基类中的方法?
【发布时间】:2014-04-30 22:09:42
【问题描述】:

基类名为 Tree,它内部有一个名为 insert 的私有函数。

派生类叫BST,里面还有一个叫insert的私有函数,我想让这个insert函数调用Tree类里面的insert函数。

这可以在 C++ 中实现吗?

【问题讨论】:

标签: c++


【解决方案1】:

如果基类中的插入方法是publicprotected,答案将是“是”。不过,既然你说是private,那答案肯定是“不”。

【讨论】:

    【解决方案2】:

    不,您不能,除非基类将派生类或其insert() 成员函数声明为其friends 之一。

    与您想要的最接近的是声明基类insert() 成员函数protected,而不是private。这样会更简单,更明智。

    请注意,一般来说,给派生类的成员函数赋予与其基类中的成员函数相同的名称和签名并不是一个好主意,除非基类成员函数声明为virtual 并且派生类成员函数旨在覆盖它。

    【讨论】:

      【解决方案3】:

      在派生类中,您可以调用基类函数,但前提是它们是 protectedpublicprivate 方法通常只能由类本身的方法调用。

      然而,有一些丑陋的黑客可以调用私有函数,例如:Calling private method in C++herehere。一个值得注意且不太老套的方法可能是一个公共成员函数,它返回一个指向您要调用的私有函数的指针。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-17
        • 2014-04-30
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 2020-10-21
        • 2014-03-22
        • 2013-03-23
        相关资源
        最近更新 更多