基类中没有的方法,不要乱调用
#include <iostream> using namespace std; class A{ public: A() { cout<<"construct A"<<endl; } virtual void disp() { cout<<"AAAA"<<endl; } ~A() { cout<<"destory A"<<endl; } }; class B:public A { public: B() { cout<<"construct B"<<endl; } virtual void disp(int a) //是基类的扩展(重载,只能B的实例来调用),不是重写!! { cout<<"BBBB"<<endl; } ~B() { cout<<"destory B"<<endl; } }; int main() { B *b = new B(); A *a = b; //A只是个指针 并没有构造 只需要析构b即可 //a->disp(2); //no matching function for call to 'A::disp(int)' //就是说a中没有的方法不能乱调用 a->disp();//派生类中没有重写,则调用基类版本 delete b; return 0; }