读书人

一个C++有关问题

发布时间: 2012-03-12 12:45:32 作者: rapoo

请教大家一个C++问题
class A
{
public:
void virtual print(){cout<<"A::print()"<<endl;}
};
class B :public A
{
public:
void virtual print(){cout<<"B::print()"<<endl;}
} ;
class C :public B
{
public:
static void print(){cout<<"C::print()"<<endl;}
} ;

A *ac;
C c;
ac=&c;
ac->print();
输出什么? 为什么?

[解决办法]
B::print()

C++的虚函数
[解决办法]
B::print()
因为ac为基类的指针,一般智能调用基类的函数
对于虚函数调用派生类的函数,但是C类的print不是虚函数 因此调用B类的print
如果C修改为class C :public B
{
public:
//static void print(){cout <<"C::print()" <<endl;}
virtual void print(){cout <<"C::print()"<<endl;}
} ;
则调用C类的虚函数print

读书人网 >C++

热点推荐