21xrx.com
2025-03-29 09:34:52 Saturday
文章检索 我的文章 写文章
C++中获取类的大小:sizeof class
2023-07-03 16:17:15 深夜i     13     0
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个字节。

  
  

评论区