基类名为Tree,它内部有一个名为insert的私有函数。
派生类名为BST,它内部也有一个名为insert的私有函数,我希望这个insert函数调用Tree类中的insert函数。
这可以用C ++做吗?
答案 0 :(得分:2)
答案是“是”'如果基类中的insert方法是public
或protected
。但是,既然你说它是private
,答案必须是“不”#。
答案 1 :(得分:1)
在派生类中,您可以调用基类函数,但前提是它们是protected
或public
。 private
方法通常只能通过类本身的方法调用。
然而,有些丑陋的黑客可以调用私有函数,例如请参阅:Calling private method in C++或here或here。一个值得注意但不太讨厌的方法可能是一个公共成员函数,它返回一个指向你想要调用的私有函数的指针。
答案 2 :(得分:1)
不,您不能,除非基类声明派生类或其insert()
成员函数是其friend
之一。
最接近您想要的是声明基类insert()
成员函数protected
,而不是private
。这将更简单,更明智。
请注意,除非基类成员函数声明为virtual
,否则为派生类的成员函数赋予与其基类中的成员函数相同的名称和签名并不是一个好主意。派生类成员函数用于覆盖它。