首页 > 解决方案 > 私下有什么意义

问题描述

如果您可以创建包含类的联合和具有类中相同变量的结构,那么私有修饰符的目的是什么?

class SecretClass {
    public:
        int a = 12;
        int b = 64;
    private:
        int c = 2138;
        int d = 8789;
};

union Access {
    SecretClass secret;
    struct {
        int a,b,c,d;
    };
};

int main() {
    SecretClass secret;
    Access access{ secret };
    std::cout << access.a << std::endl;
    std::cout << access.b << std::endl;
    std::cout << access.c << std::endl;
    std::cout << access.d << std::endl;
}

标签: c++

解决方案


访问说明符不是用来强制访问的。它们的存在是为了防止意外错误地使用该类的 API。有多种方法可以绕过它们,但偶然这样做几乎是不可能的。

换句话说,private类中的所有内容都说“你不应该访问这些”。它没有说“你不能访问这些”。


推荐阅读