c++ - 类大小的字节计算

标签 c++

什么是sizeof(salesman)?它说 48 字节,需要解释原因。

class customer {
  char c;
  double l;
  int k;
};

class salesman: private customer{
   int salno;
   char salname[20];
   protected :
    float salary;
 };

最佳答案

好吧,很难对编译器进行事后猜测。

但是 客户 可能合理地需要 1 + 7 + 8 + 4 + 4 = 20 个字节(第 7 个和最后的 4 个是填充)。然后是 salesman 额外的 4 + 20 + 4 = 28,看起来编译器足够聪明,在进行子类化时从 customer 中删除最后 4 个填充字节.那是 48!

上面假设sizeof (int)sizeof (float)为4,sizeof (double)为8。

关于c++ - 类大小的字节计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21409035/

相关文章:

c++ - STL 绳索 - 何时何地使用

c++ - 如何继承构造函数,或者如何调用参数数量未知的构造函数?

c++ - 显示和保存对象的链接列表

c++ - 使用单写入器增长 Boost.Interprocess 内存映射文件

c++ - 带有 QOpenGLWIdget 的 Qt MainWindow 在 Retina 显示器中显示错误的尺寸

c++ - C++中用于动态编程的动态数组

c++ - 将矩阵传递给函数的问题

c++ - 用单个空格分割字符串

c++ - 我必须在 VS 2008 中使用 "Visual"C++ 吗?

c++ - 获取 llvm 指令的 use 和 def