多态中虚函数表的地址是所有对象共享的

来源:互联网 发布:韩国的文化知乎 编辑:程序博客网 时间:2024/05/22 08:26
// vtabPtrShared.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;//多态中虚函数表的地址是所有对象共享的class   parent{ public: virtual void  test(){ cout << "from   parent " <<endl; }}; class   son1:public   parent{ public: virtual void  test(){ cout << "from   son1 " <<endl; } }; class   son2:public   parent{ public: virtual void  test(){ cout << "from   son2 " <<endl; } }; int _tmain(int argc, _TCHAR* argv[]){son1   s1; son2   s2; parent&   p=s1; p.test(); s1.test();p=s2; //(1)没有改变 p.test(); {son1  * s1=new son1; son2  * s2=new son2;parent*  p=s1; p->test(); p=s2; //(1)没有改变 p->test(); }int   j=1,   k=2; int   &   i   =   j; cout <<i<<","<<j <<endl; i   =   k; //(2)却改变了 cout <<i<<","<<j  <<endl; return 0;}/*输出结果: from   son1from   son1from   son1from   son1from   son21,12,2请按任意键继续. . . 如果理解了在多态中虚函数表的地址是所有对象共享的。对这个结果就不会困惑。*/

原创粉丝点击