首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个C++有关问题

2012-03-12 
请教大家一个C++问题classA{public:void virtual print(){coutA::print()endl}}classB :public A{

请教大家一个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

热点排行