我们可以做这样的事情:
#include <iostream>
class Foo
{
public:
Foo() { std::cout << sizeof(*this) << '\n'; }
};
Run Code Online (Sandbox Code Playgroud)
在C标准中,我看到以下内容:
ISO/IEC 9899:2011
6.7.2.1结构和联合说明符
8 ...类型不完整,直到终止列表的}之后,然后完成.
但在C++标准版中我找不到任何类比.
sizeof运算符不应该应用于具有不完整类型的表达式,那么我们可以编写这样的代码吗?
Mar*_*k B 10
是的,您可以编写此类代码,因为编译器必须将其视为类定义在类方法实现中完成.
例如,它必须像对待你一样对待它:
#include <iostream>
class Foo
{
public:
Foo();
};
// Methods declared in the body of a class are implicitly inline
// Inline, however, probably doesn't mean what you think it means:
inline Foo::Foo() { std::cout << sizeof(*this) << '\n'; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1468 次 |
| 最近记录: |