多态中虚函数表的地址是所有对象共享的
来源:互联网 发布:韩国的文化知乎 编辑:程序博客网 时间: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请按任意键继续. . . 如果理解了在多态中虚函数表的地址是所有对象共享的。对这个结果就不会困惑。*/
- 多态中虚函数表的地址是所有对象共享的
- 函数指针类的虚函数表是一块连续的内存,每个内存单元中记录一个JMP指令的地址。 注意的是,编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。类的每个虚成员占据虚函数表中的一
- C++单个类的所有对象是否共享虚函数表的验证
- 一个类的static变量在其所有实例化对象上是共享的
- 证明类成员函数是共享的。
- MyISAM 表的index blocks 是buffered 和被所有的threads 共享。
- java的对象传递(传递的是对象地址)
- 静态函数里定义的变量,不为所有对象共享,类的静态变量和类外全局变量区别,静态函数和普通函数区别
- 因为成员函数属于同一个类的所有对象,所以在成员函数内可以访问同类其他对象的私有成员是合理的
- TList, List.Pack 清除所有已是 nil 的对象
- 指针是一个保存对象地址的变量,地址是一种数据类型
- 送给所有的共享新手
- 送给所有的共享新手
- C++对象指针比较比较的并不是地址值
- JavaScript的函数与对象是一回事
- Java面向对象【经典案例】数组是对象,其变量的值是引用地址
- 用面向对象思维理解.NET委托:函数是对象、委托是函数对象的类型
- 用面向对象思维理解.NET委托:函数是对象、委托是函数对象的类型
- 统计算法执行时间-毫秒级
- Linux下网络编程--Socket编程
- .NET 面试题
- 将数组作为参数的单参数函数
- C# 中ref 和out 参数的区别
- 多态中虚函数表的地址是所有对象共享的
- 浅谈网络数据包传递过程中涉及的话题
- Oracle数据库备份和恢复(导出,导入)
- myeclipse web工程多余包部署问题(servlet-api.jar,jsp-api.jar冲突问题解决方法)
- InterviewStreet —— Hanoi Moves
- Starting nagios:CONFIG ERROR! Start aborted. Check your Nagios configuration
- 清除windows网上邻居的登陆帐号密码
- eclipse内存溢出报错:java.lang.OutOfMemoryError:
- cococs2d-x 多线程加载plist