C++中子类继承父类,为何可以在子类和父类中命名相同名字的函数?

如果子类的对象 要调用从父类继承下来的函数怎么办?
2024-12-23 01:15:07
推荐回答(3个)
回答1:

你运行一下下面的代码,就明白了。

class C
{
public:
void Test()
{
printf( "C.Test()\n" );
}
};

class B : public C
{
public:
void Test()
{
printf( "B.Test()\n" );
}
};

class A : public B
{
public:
void Test()
{
printf( "A.Test()\n" );
}
void BTest()
{
B::Test();
}
void CTest()
{
C::Test();
}
};

void main()
{

A * a = new A();
a->Test();
( ( B * ) a )->Test();
( ( C * ) a )->Test();
a->BTest();
a->CTest();
delete a;
}

PS:
如果是虚函数,而且派生类的函数签名与基类的签名一致,那么,基类的该同名函数指针已经被覆盖了,所以,就不可能再调用到基类的同签名函数了。非虚函数才可以使用上面的方面来调用。

回答2:

这就是c++的多态了。。
虚函数应用,可以区分。
如果子类要调用父类的函数,可以不再声明该函数,前提 是基类不要是纯虚的。

回答3:

这种行为被称为overwrite