21xrx.com
2024-09-19 09:57:49 Thursday
登录
文章检索 我的文章 写文章
C++中获取类的大小:sizeof class
2023-07-03 16:17:15 深夜i     --     --
C++ 获取 大小 sizeof

在C++中,使用sizeof class可以获取类的大小。这个操作符可以告诉我们一个类的对象需要多少内存。

在计算一个类的大小时,要考虑以下因素:

1.非静态数据成员的大小:这个类中所有非静态数据成员大小的总和。

2.Paddings的大小:在内存对齐时加入的填充字节,确保结构体是按照预期的字节对齐。

3.Virtual table的大小:如果这个类有虚函数,那么在它的对象里面就会有一个指向虚函数表的指针,这个指针大小与机器寻址空间大小通常相关。因此,virtual table的大小取决于编译器对于虚函数表的实现方式。

4.父类的大小:如果这个类派生自一个或多个父类,那么,这些父类的大小也要被计算在内。

示例


#include <iostream>

using namespace std;

class Shape {

public:

  virtual void draw()

   cout << "Drawing Shape" << endl;

 

  int area()

   cout << "Area of Shape" << endl;

 

};

class Circle: public Shape {

public:

  void draw()

   cout << "Drawing Circle" << endl;

 

  int area()

   cout << "Area of Circle" << endl;

 

};

int main() {

  cout << "Size of Shape class : " << sizeof(Shape) << endl;

  cout << "Size of Circle class : " << sizeof(Circle) << endl;

  return 0;

}

输出结果为:


Size of Shape class : 8

Size of Circle class : 8

由此可见,Shape和Circle的大小都是8个字节,因为他们都有一个指向虚函数表的指针。如果使用32位机器通常是4个字节,而在64位机器上通常是8个字节。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复