大家,先想一想,如果把原来实现多态的父类中virtual函数声明为private的形式,是否还可以实现多态呢。答案将由下面的代码给出。
#include<iostream>
using namespace std;
class A
{
private:
virtual void print()
{
cout<<"in class A!"<<endl;
}
public:
void f()
{
print();
}
};
class B:public A
{
public:
void print()
{
cout<<"in class B!"<<endl;
}
};
class D:public A
{
public:
void print()
{
cout<<"int class D!"<<endl;
}
};
int main(void)
{
A *p1=new B;
p1->f();
A *p2=new D;
p2->f();
return 0;
}
答案是可以的,至于为什么,这是一种设计模式的理念。具体的等我弄懂了再补充大家可以先自己想下,研究研究。
探讨了在C++中,当父类的虚函数被声明为私有时,子类是否仍能实现多态。通过具体代码示例验证了即使虚函数为私有,多态仍然可以工作。
2076

被折叠的 条评论
为什么被折叠?



