C++ 对象模型
---- 本文心得来自《深入理解C++对象模型》
C++类的存储模型
在C++模型中,非静态成员变量存放在类的实例中,静态成员变量、静态成员函数和非静态成员函数被存在类的实例外,虚函数的存储原则如下:
- 每个类会产生一堆指向虚函数的指针,以表格的形式存放,称为virtual table(vtbl)
- 每个类的实例都有一个指针,指向该类的虚表,称为vptr。Vptr的设定和重置都是由每个类的构造函数、析构函数和拷贝赋值自动完成。每个类所关联的type_info实例也被指出来,放在虚表的第一个slot处。
(未完待续...)
Some tips about C++ Point
指向不同类型的指针,他们的区别在于根据他们所指向类型的不同,教导编译器如何解释某个特定地址中的内存内容和大小。因此void*的指针指向的内存只能还有一个地址。转型(cast)其实是一种编译器指令,大部分情况下它并不该笔那一个指针所含有的真正地址,它只影响“被指出之内存的大小和其内容”的解释方式。