代码似乎可以编译并成功访问私有数据。这是定义良好的行为吗?
#include <iostream>
#include <string>
using std::string;
class foo {
string private_data = "Hello World";
};
int main()
{
foo f;
auto* pprivate_data = reinterpret_cast<string*>(&f);
std::cout << *pprivate_data << '\n';
}
这个问题有点类似,但我认为它没有回答我的问题。
class
关键字呢? - user2039981foo
包含多个成员,我几乎可以确定将完整的foo
实例重新解释为其成员类型之一时,会违反严格别名规则。 - Fareanor