编译器如何控制内存中变量的保护?是否有与内存中的私有变量相关联的标记位?它是如何工作的?
这似乎成功编译和访问私有数据。这是定义明确的行为吗?
#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';
}
Run Code Online (Sandbox Code Playgroud)
这个问题有点相似,但我相信它没有解决我的问题。
在C++标准中它在哪里讨论别名?我看着ToC,没有提到"别名"这个词.我试着查看一个定义规则(3.2),搜索'别名'没有结果.我可能会感到茫然.我正在寻找内存别名