我对参考文献的大小感到困惑 我已经采取了两个例子并编译了它
//示例程序
#include <iostream>
#include <string>
using namespace std;
class ABC
{
int &y;
ABC(int a):y(a)
{
}
};
int main()
{
std::cout <<sizeof(ABC)<<endl;
return 0;
}
o / p - 8
当我在课堂上引用参考文献的大小时
//示例程序
#include <iostream>
#include <string>
using namespace std;
int main()
{
int y = 7;
int &x = y;
cout<<sizeof(x);
}
o / p - 4
请确认为什么参考文献的大小在课程方面或在课程内部有所不同。
答案 0 :(得分:1)
为什么引用的大小在类的内部或函数内部不同。
因为sizeof
计算的对象不同。对于sizeof(x)
,sizeof operator将返回引用类型的大小,即int
。
应用于引用类型时,结果是引用类型的大小。
sizeof(ABC)
将返回包含引用的类ABC
的大小。他们不是一回事。
请注意,对于包含refrence的类的情况,标准没有说明应该如何实现引用以及表示的大小应该是什么,但是在大多数实现中,引用将被实现为指针,并且在64-位系统,地址是64位,因此您可能得到8
的结果。