逻辑私有 VS 物理私有

Lan*_*ker 0 c++ encapsulation private

我有一个简单的程序:

class Element
{
public:
    Element(void) { m_iVal = 56789;}
    ~Element(void) {};
private :
    int m_iVal;
};  
Run Code Online (Sandbox Code Playgroud)

变量m_iVal是私有的,这从概念的角度(继承,...)造成了限制。
然而,虽然是私有的,但仍然可以访问它的内容。

在此处输入图片说明

有没有办法禁止对变量(或堆区域)的物理访问,以便对该私有区域的任何访问都将导致内存访问冲突。

Jes*_*uhl 5

访问保护;public/ protected/private纯粹的编译时的事情。它的存在是为了防止简单的错误。它不是运行时保护机制。

一旦你的代码已通过编译器的第一阶段,publicprotectedprivate不再存在于所有。在生成的二进制文件中,没有任何痕迹。