多态性:向不同的对象发送同一个消息,不同的对象在接受时会产生不同的行为(即方法) #include <iostream> using namespace std; class B { public: void print() { cout << "B::print()" << endl; } virtual void show(); }; void B::show() { cout << "B::show()" << endl; } class D :public B { public: void print() { cout << "B::print()" << endl; } void show() { cout << "D::show()" << endl; } }; class E :public D { public: void show() { cout << "E::show()" << endl; } }; void fun(B *pb) { pb->show(); } int main() { D d; B b; E e; fun(&d); fun(&b); fun(&e); getchar(); return 0; }
最好把基类的析构函数声明为虚函数 #include <iostream> using namespace std; class B { public: B() { cout << "B()" << endl; } virtual ~B() { cout << "~B()" << endl; } }; class D :public B { public: D() { cout << "D()" << endl; } ~D() { cout << "~D()" << endl; } }; int main() { //D d; B *pb = new D; delete pb; getchar(); return 0; }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。