calss A
{
public:
int x;
virtual void update()=0;
};
class B :public A
{
int y;
public:
B(){y=1;}
void update(){cout<<"hello"<<endl;}
void cgr(int y){cout<<y<<endl;}
};
void main()
{
A *p=new B;
}
这时候 B的cgr()函数怎样才能使用?
A *p = new B; // 本来new了个B,然后向上转换为A
由于A不存在cgr函数,所以没办法使用到
除非向下转型为B
例如:
A *p = new B;
B *t = dynamic_cast<B*>(p);
t->cgr(19); // 就可以用了
把cgr函数也作为基类的虚函数