访问说明符的 C++ 实现

标签 c++ oop

据我了解,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)成员i3i4只能在类外访问i1i2可以吗?

最佳答案

C++ 有(一些)安全防护来防止 Murphy,而不是 Machiavelli。

这意味着 constvolatile 和 access-qualifiers 在编译时被检查,但即便如此也可以被绕过(有各种技巧)。

所以... C++ 不需要实现保护方案。如果程序被编译,它被认为是正确的(wrt 那些限定符)并且将在没有运行时检查的情况下执行。

关于访问说明符的 C++ 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10975513/

相关文章:

php - 关注点分离; MVC;为什么?

c++ - 在构造函数中调用纯虚函数会报错

java - 如何判断派生类的类型?

php - 如何使用 __autoload 从多个目录加载类?

c++ - Opus 中的 "useinbandfec is a unidirectional receive-only parameter"是什么意思?

c++ - 更改函数以使用 vector 而不是数组

c++ - While 循环导致 SDL_Rect 和 SDL_Textures 滞后?

c# - 如何延迟加载而不从我的对象调用我的业务对象层

c++ - C++ 中 "if error then fail fast"的性能损失?

c++正确关闭cout