c++类的大小

如果没有虚函数,则类的大小等于成员变量所占的空间,不论有多少个函数都不会占用类的空间。

class A {
private:
  int32_t i = 0; // size = 4;
  int32_t j = 0; // size = 8;
  int plus (int a, int b) { return a+b;}
  void change_i (int a, int b) { i = a+b;}

public:
  A() = default;
  ~A();
};



int main() {
  std::cout << sizeof(A) << std::endl;
  return 0;
}

//g++ test.cpp -o test

但是如果类里面有虚函数,则虚函数本身会占用类8字节的大小,且类大小至少以8字节的大小递增。如下图所示,即使只多了一个大小为4字节的成员变量,类的大小仍然从8字节增加到16字节:

class A {
private:
  int32_t i = 0; // size = 16;
  virtual int plus (int a, int b) = 0;

public:
  A() = default;
  ~A();
};

int main() {
  std::cout << sizeof(A) << std::endl;
  return 0;
}

//g++ test.cpp -o test
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值