派生类中的函数重载

时间:2011-04-26 06:41:01

标签: c++ inheritance

我想知道以下代码是否正确

class A
{
public :
    int show (int x, int y);
};

class B : public A
{
public : 
    float show (int a, int b); // can i overload this function ?
};

show函数存在于基类和派生类中,具有不同的书写类型。 我知道函数重载的概念(不能用不同的返回类型重载)。

这可能吗?

4 个答案:

答案 0 :(得分:0)

代码将成功编译。方法A::show不会重载但隐藏。

您可以使用范围运算符调用此方法。

答案 1 :(得分:0)

检查此link或此link

Class A
{
Public :
virtual int show (int x, inty) = 0;
};

class B:Public A
{
Public : 
float show (int x, int y);
};

答案 2 :(得分:0)

当我声明基础obj并将其指向派生类时:

a aObj; B bObj; aObju =& bObj;

bObj.Show(); //哪个函数将被称为基类或派生类?

答案 3 :(得分:0)

如果您创建派生类对象,如

1)

B b; 
b.show(); 

OR

2)

A* b = new B();
b->show();

将始终查看派生类,并调用B :: show()。

这是针对您的特定示例的,其中不存在任何虚函数,如果基类中存在虚函数,则在其他情况下,第二种情况可以给出不同的结果,但是在此特定示例中,即使基类虚函数也可以没什么。