据我了解,C++ 类中的非静态数据成员被打包到 C 风格的结构中。为了简化此讨论而忽略虚函数和继承,如何在这种方案中强制执行访问说明符?
说一个类:
class Object
{
public:
int i1;
int i2;
private:
char i3;
int i4;
};
转换为:
struct {
int i1;
int i2;
char i3;
int i4;
}
c++如何保证私有(private)成员i3
和i4
只能在类外访问i1
和i2
可以吗?
最佳答案
C++ 有(一些)安全防护来防止 Murphy,而不是 Machiavelli。
这意味着 const
、volatile
和 access-qualifiers 在编译时被检查,但即便如此也可以被绕过(有各种技巧)。
所以... C++ 不需要实现保护方案。如果程序被编译,它被认为是正确的(wrt 那些限定符)并且将在没有运行时检查的情况下执行。
关于访问说明符的 C++ 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10975513/