【发布时间】:2020-05-25 21:01:10
【问题描述】:
我有一个简单的程序:
class Element
{
public:
Element(void) { m_iVal = 56789;}
~Element(void) {};
private :
int m_iVal;
};
变量m_iVal 是私有的,从概念的角度来看(继承、...)存在限制。
但是,虽然是私有的,但仍然可以访问它的内容。
有没有办法禁止对变量(或堆区域)的物理访问,以便对这个私有区域的任何访问都会导致内存访问冲突。
【问题讨论】:
-
你所做的是未定义的行为。
-
private不是让会员无法访问,而是防止您不小心访问。如果您仍然想访问它,您可以,但您为什么要访问它? (顺便说一句,您访问它的代码具有未定义的行为,您不能阻止某人这样做,尽管也有合法的方法) -
@RinatVeliakhmedov 我不确定这是 C++ 中未定义的行为。至少在 C 中,要求结构的地址与其第一个成员的地址相同。
-
@RinatVeliakhmedov 我非常清楚这一点,但我希望禁止另一个本地第三方程序或 DLL 在我的对象实例中进行“任何搜索”...
-
@Landstalker 你想要的是一只独角兽。你不能拥有那个。你可以养一匹小马。它不是独角兽,但看起来很相似。不过不会变魔术。对不起。
标签: c++ private encapsulation