菜鸟请教:关于虚函数的问题,感谢!
class A{
public:
virtual void show(){cout<<"class A"<<endl;}
};class B:public A
{
public:
void show(){}{cout<<"class B"<<endl;}
};
class C:public B
{
public:
void show(){}{cout<<"class C"<<endl;}
};void main()
{
A a,*pa=&a;
B b,*pb=&b;
C c;
pa=&b;
pa->show();
pa=&c;
pa->show();
((B*)pa)->show(); //(B*)pa是将pa强制转换成转换成指向B类的指针,还是指向B类对象的指针?如果是后者,那么是B类无名对象的指针么?也就是((B*)pa)->show()即用指向B类无名对象的指针pa访问该对象的show()函数,由于B类的show()延续了A中的virtual属性,结果访问的是派生类C中的show函数,显示:class C;可以这样理解么?
....
.....
}