多态中虚函数表的地址是所有对象共享的
2012-06-08 00:50
190 查看
class parent{
public:
virtual test(){
cout < < "from parent " < <endl;
};
};
class son1:public parent{
public:
virtual test(){
cout < < "from son1 " < <endl;
};
};
class son2:public parent{
public:
virtual test(){
cout < < "from son2 " < <endl;
};
};
void main(){
son1 s1;
son2 s2;
parent& p=s1;
p.test();
p=s2; //(1)没有改变
p.test();
int j=1, k=2;
int & i = j;
cout < <i < <endl;
i = k; //(2)却改变了
cout < <i <endl;
}
输出结果:
from son1
from son1
1
2
如果理解了在多态中虚函数表的地址是所有对象共享的。
对这个结果就不会困惑。
public:
virtual test(){
cout < < "from parent " < <endl;
};
};
class son1:public parent{
public:
virtual test(){
cout < < "from son1 " < <endl;
};
};
class son2:public parent{
public:
virtual test(){
cout < < "from son2 " < <endl;
};
};
void main(){
son1 s1;
son2 s2;
parent& p=s1;
p.test();
p=s2; //(1)没有改变
p.test();
int j=1, k=2;
int & i = j;
cout < <i < <endl;
i = k; //(2)却改变了
cout < <i <endl;
}
输出结果:
from son1
from son1
1
2
如果理解了在多态中虚函数表的地址是所有对象共享的。
对这个结果就不会困惑。
相关文章推荐
- 多态中虚函数表的地址是所有对象共享的
- 函数指针类的虚函数表是一块连续的内存,每个内存单元中记录一个JMP指令的地址。 注意的是,编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。类的每个虚成员占据虚函数表中的一
- 静态函数里定义的变量,不为所有对象共享,类的静态变量和类外全局变量区别,静态函数和普通函数区别
- C++单个类的所有对象是否共享虚函数表的验证
- java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况
- 因为成员函数属于同一个类的所有对象,所以在成员函数内可以访问同类其他对象的私有成员是合理的
- this 指针的地址--调用成员函数的所在对象的起始地址
- C++11 理解 (二十六) 之 多态函数对象包装器
- 刷新共享对象管理器缓存时发生意外错误。System.InvalidOperationException:超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并
- 显示js对象所有属性和方法的函数
- 前端笔试题笔记:拍扁多维数组、提取URL中的参数变成对象、string的trim()函数、判断Email地址、16进制颜色转rgb
- 如何动态保存不同类的对象的成员函数的地址?--解决
- 删除当前用户的所有对象(表、视图、触发器、存储过程、函数)
- JS 将变量 转化为字符串的方法, 适用于所有类型,数组, 对象,函数和基本类型等
- 一个类的static变量在其所有实例化对象上是共享的
- 《第七周任务一》含有静态数据成员和成员函数的Time类,类中所有的对象共有的数据
- 零基础学python-15.4 函数的多态vs对象的多态
- 一切皆对象之两个方法概括js,无函数签名(无多态),原型,闭包,封装,引用类型,继承……
- Delphi与C++之间通过实现函数与对象共享
- 对象作为函数参数时调用拷贝构造函数、引用做函数参数时只是传递地址