// 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 son1
from son1
from son1
from son1
from son2
1,1
2,2
请按任意键继续. . .
如果理解了在多态中虚函数表的地址是所有对象共享的。
对这个结果就不会困惑。
*/
多态中虚函数表的地址是所有对象共享的
最新推荐文章于 2022-07-20 16:50:43 发布