c++ 空类占用多少字节?会自动生成哪些函数

空类在声明时不会生成任何成员函数,只会生成1个字节的占位符。
当定义了空类的对象时,编译器会生成6个成员函数:缺省的构造函数、拷贝构造函数、赋值运算符、析构函数、两个取地址运算符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
/*
class A
{}; 该空类的等价写法如下:
*/
class A
{
public:
A(){}; // 缺省构造函数
A(const A &tmp){}; // 拷贝构造函数
~A(){}; // 析构函数
A &operator=(const A &tmp){}; // 赋值运算符
A *operator&() { return this; }; // 取址运算符
const A *operator&() const { return this; }; // 取址运算符(const 版本)
};

int main()
{
A *p = new A();
cout << "sizeof(A):" << sizeof(A) << endl; // sizeof(A):1
delete p;
return 0;
}

作者:力扣 (LeetCode)
链接:https://leetcode.cn/leetbook/read/cpp-interview-highlights/eflvg3/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。