class A{ public: void print(){ cout<<"This is A"<<endl;} }; class B:public A{ public: void print(){ cout<<"This is B"<<endl;} }; int main(){ //为了在以后便于区分,我这段main()代码叫做main1 A a; B b; a.print(); b.print(); }
int main(){ //main2 A a; B b; A* p1=&a; A* p2=&b; p1->print(); p2->print(); }
class A{ public: virtual void print(){ cout<<"This is A"<<endl;} //现在成了虚函数了 }; class B:public A{ public: void print(){ cout<<"This is B"<<endl;} //这里需要在前面加上关键字virtual吗? };
毫无疑问,class A的成员函数print()已经成了虚函数,那么class B的print()成了虚函数了吗?回答是Yes,我们只需在把基类的成员函数设为virtual,其派生类的相应的函数也会自动变为虚函数。所以,class B的print()也成了虚函数。那么对于在派生类的相应函数前是否需要用virtual关键字修饰,那就是你自己的问题了。
原文:http://www.cnblogs.com/bitnpc/p/3602208.html