据我了解,C++ 类中的非静态数据成员被打包到 C 风格的结构中。为了简化讨论,忽略虚函数和继承,在这样的方案中如何强制执行访问说明符?
说一个类:
class Object
{
public:
int i1;
int i2;
private:
char i3;
int i4;
};
Run Code Online (Sandbox Code Playgroud)
翻译成:
struct {
int i1;
int i2;
char i3;
int i4;
}
Run Code Online (Sandbox Code Playgroud)
如何C ++确保私有成员i3
并i4
不能在类外访问,但i1
并i2
可以吗?
C++ 有(一些)安全措施来防止墨菲,而不是马基雅维利。
这意味着const
,volatile
和 access-qualifiers在编译时被检查,但即使这样也可以绕过(使用各种技巧)。
所以... C++ 不需要实现保护方案。如果程序被编译,它被认为是正确的(写那些限定符)并且将在没有运行时检查的情况下执行。