我在编写一个小型c++程序来测试作为类成员的引用时遇到了这种情况。
该程序仅作为类成员提供引用,因此其o / p为8。
通常,引用将大小作为其所属的特定数据类型给出。但是为什么这里是8(而不是4)。请帮助我理解它。
#include<iostream>
using namespace std;
class Test {
int &t;
public:
Test(int &t):t(t) {}
};
int main()
{
int x = 20;
Test t1(x);
int &ref = x;
cout<<sizeof(ref)<<endl;
cout<<sizeof(t1)<<endl;
return 0;
}
输出-
/home/user>./a.out
4
8
最佳答案
[expr.sizeof]
sizeof
引用将返回所引用对象的大小,在sizeof(ref)
的情况下,它等于sizeof(int)
,在您的平台上为4。
另一方面,您的类需要存储对int
的引用,标准未指定实现应如何实现此目标,但通常(如果不是通用的话)将它们存储为幕后指针。您平台上的sizeof(int*)
大概是8,但是细节并不重要,您只需要知道sizeof(Test)
是8。
关于c++ - 作为唯一的类成员,引用为整数提供大小8,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30746062/