首页 > 试题广场 >

以下C++代码在64位环境下会输出多少? #includ

[单选题]
以下C++代码在64位环境下会输出多少?
#include <iostream>
using namespace std;
struct Bar { 
	char c[16];
};
struct Test { 
	Bar& bar;
};
int main()
{
	cout << sizeof(Test::bar);
}

  • 1
  • 0
  • 16
  • 8
  • 4
这个代码跑不通
发表于 2020-12-01 12:26:46 回复(1)
这个题没有大佬来解释下的吗?
发表于 2020-09-27 09:33:58 回复(1)
在64位计算机下,
sizeof(Bar)的大小为char数组的大小=1 * 16 = 16Byte
sizeof(Test)的大小为结构体Bar的引用Bar&的大小=8Byte
sizeof(Test::bar)的大小为引用对象的大小=Bar=16Byte

发表于 2022-02-25 18:18:48 回复(0)
对引用调用sizeof获得是引用的对象的大小。
发表于 2021-05-14 11:40:37 回复(0)
发表于 2021-03-08 18:03:14 回复(5)
这里结构体可以视为一个类,而且成员属性都是public的,那么,输出时候就是bar类里面成员大小,而其为char类型,占1个字节,共16个,那么输出就是16。不知道这么解析合适不合适,欢迎各位大佬指正。
发表于 2020-10-19 09:09:23 回复(0)
根据C++标准,在结构体中使用引用是不合法的,因为引用必须在声明时被初始化,并且无法重新绑定到其他对象。因此,结构体 Test 中的 Bar& bar 是不允许的,编译器会报错。

非要算的话,引用底层可能是通过指针实现的, Bar& bar=c,所以16或者8
发表于 2023-10-31 10:13:54 回复(0)
关于类/对象大小的计算 1首先,类大小的计算遵循结构体的对齐原则 2类的大小与普通数据成员有关,与成员函数和静态成员无关。即普通成员函数,静态成员函数,静态数据成员,静态常量数据成员均对类的大小无影响 3虚函数对类的大小有影响,是因为虚函数表指针带来的影响 4空类的大小是一个特殊情况,空类的大小为1
发表于 2023-03-27 15:53:58 回复(1)
发表于 2022-10-10 18:56:39 回复(0)
1.正如前面大佬所说,对于引用调用sizeof,sizeof返回引用指向的对象的大小,这里sizeof(Test::bar)返回16,返回bar指向的Bar的大小。
2.引用本质是指针,sizeof(引用)  不是返回指针大小, 所以sizeof(Test)返回8(64位机器指针大小8字节), 因为Test只有一个引用指向Bar, 而sizeof(Test::bar) == 16,原因是第一点所说
发表于 2022-03-06 19:06:19 回复(0)
这个引用有初始化吗?
发表于 2021-04-01 13:14:25 回复(0)
char一个字节,总共16个
发表于 2022-01-20 22:26:02 回复(0)