0%

sizeof - class 类型

  • 空的 class, 没有成员变量和成员函数,对该类型求 sizeof, 结果为 1
  • 空类型不包含任何信息,但是声明类型实例时,必须在内存中有一定内存, 占用内存大小由编译器决定,在 g++ 8.1 中占用 1 字节
  • 如果在类中添加一些非虚函数,再求 sizeof, 结果还是 1
  • 调用类函数只需要知道函数地址就行了,而函数地址只与类型相关, 与实例无关
  • 如果添加一个析构函数并标记为虚函数
  • C++ 类一旦有虚函数,编译器就会为该类型生成虚函数表, 并在每个该类型实例中添加一个指向虚函数表的指针,32 位机器上, 一个指针为 4 字节,所以 sizeof 结果为 4; 如果是 64 位机器,一个指针占用 8 字节, 则 sizeof 结果为 8

字节序的问题在不同硬件,系统,或者在网络交互时都需要格外注意

阅读全文 »