2
成员初始值设定项中使用的sizeof的行为是什么?我无法找到关于这个的描述。在下面的代码示例中它是安全的吗?即struct
会员编译后会把A
正确的大小写入b
?成员初始值设定项中使用的sizeof的行为是什么?
struct A
{
int a = 0;
int b = sizeof(A);
int c = 3;
int d = 4;
char s[256];
A()
{
//printf("b = %d\n", b);
}
};
应该正常工作。结构声明不依赖于初始化器,所以在创建结构的时候sizeof将被填充,此时结构的大小已知。 –
你应该尝试一些更有趣的事情。添加地图或其他东西。 –
“添加地图”有什么不同?当涉及到'sizeof'时,'std :: map'具有固定的大小。它可能会有不同的动态大小,但这完全是无关紧要的。只要编译器知道'class'或'struct'的定义,它就可以正常工作。任何其他类型的内容都不能包含未知大小的元素。这就是为什么你必须使用指针或引用尚未完全定义的对象。 –