我想知道以下代码是否正确
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函数存在于基类和派生类中,具有不同的书写类型。 我知道函数重载的概念(不能用不同的返回类型重载)。
这可能吗?
答案 0 :(得分:0)
代码将成功编译。方法A::show
不会重载但隐藏。
您可以使用范围运算符调用此方法。
答案 1 :(得分:0)
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()。
这是针对您的特定示例的,其中不存在任何虚函数,如果基类中存在虚函数,则在其他情况下,第二种情况可以给出不同的结果,但是在此特定示例中,即使基类虚函数也可以没什么。