如果有一个POD结构,带有一些成员变量,例如:
struct foo
{
short a;
int b;
char c[50];
// ...
};
Run Code Online (Sandbox Code Playgroud)
有没有办法以字节为单位获取成员变量的大小,而无需创建此类型的对象?
我知道这会奏效:
foo fooObj;
std::cout << sizeof( fooObj.a ) << std::endl;
std::cout << sizeof( fooObj.b ) << std::endl;
std::cout << sizeof( fooObj.c ) << std::endl;
Run Code Online (Sandbox Code Playgroud)
以下内容是否会被编译器优化并阻止构造对象?
std::cout << sizeof( foo().a ) << std::endl;
Run Code Online (Sandbox Code Playgroud)
Eri*_*rik 27
5.3.3/1:
sizeof运算符产生其操作数的对象表示中的字节数.操作数是表达式(未计算)或带括号的type-id.
以上意味着以下结构定义明确:
sizeof( ((foo *) 0)->a);
Run Code Online (Sandbox Code Playgroud)
小智 9
使用明显的:
sizeof( foo::a )
Run Code Online (Sandbox Code Playgroud)
在C++中,sizeof总是在编译时进行评估,因此无需任何运行时成本.