【发布时间】:2022-01-05 12:08:54
【问题描述】:
根据cppreference,
当应用于引用类型时,结果是 引用类型。
但是在下面的程序中,编译器给出了不同的输出。
#include <iostream>
using namespace std;
class A
{
private:
char ch;
const char &ref = ch;
};
int main()
{
cout<<sizeof(A)<<endl;
return 0;
}
输出:
16
这里ch 是字符类型,引用也是字符类型。所以输出将是 2 个字节而不是 16 个字节。
在线编译器:GDB
【问题讨论】:
-
“当应用于引用类型时” - 您没有将其应用于引用类型。
-
类对象的大小不仅仅是每个成员对象的大小加起来。
-
补充一下@Eljay 所说的,数据通常以块的形式分配,具体取决于您的环境。