c++ - 私下有什么意义
问题描述
如果您可以创建包含类的联合和具有类中相同变量的结构,那么私有修饰符的目的是什么?
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;
}
解决方案
访问说明符不是用来强制访问的。它们的存在是为了防止意外错误地使用该类的 API。有多种方法可以绕过它们,但偶然这样做几乎是不可能的。
换句话说,private
类中的所有内容都说“你不应该访问这些”。它没有说“你不能访问这些”。
推荐阅读
- symfony4 - Symfony 4 default_locale 不适用于安全库消息
- node.js - Axios Vue 应用程序仅发布请求网络错误
- swift - 从 Pipe (stdout) 获取 ffmpeg 信息
- java - 使用 Clojure deps.edn 编译 Java 源代码
- python - Python:azure-storage-blob 需要 6 分钟才能将 20MB 文件下载到本地
- c# - 在 System.Text.Json 中是否可以指定自定义缩进规则?
- html - 在 Angular 8 HTML 中拆分和替换字符串
- cassandra - 拥有 cassandra 集群时的 Nodetool 输出
- shopify - Shopify 盖茨比结帐
- c++ - 当我可以确定我可以从 c++ 类继承?