对象模型
在C语言中,数据和处理数据的操作(函数)是分开的。也就是说,C语言本身没有支持数据和函数之间的关联性。
C++用类描述抽象数据类型(abstract data type,ADT),在类中定义了数据和函数,把数据和函数关联起来。
对象中维护了多个指针表,表中放了成员与地址的对应关系。
C++类中有两种数据成员:nonstatic、static,三种函数成员:nonstatic、static、virtual。
l 对象内存的大小包括:1)所有非静态数据成员的大小;2)由内存对齐而填补的内存大小;3)为了支持virtual成员而产生的额外负担。
l 静态成员变量属于类,不计算在对象的大小之内。
l 成员函数是分开存储的,不论对象是否存在都占用存储空间,在内存中只有一个副本,也不计算在对象大小之内。
l 用空指针可以调用没有用到this指针的非静态成员函数。
l 对象的地址是第一个非静态成员变量的地址,如果类中没有非静态成员变量,编译器会隐含的增加一个1字节的占位成员。
标签:函数,对象,模型,静态,内存,数据,成员 From: https://www.cnblogs.com/tgfoven/p/17114168.html