首页 > 后端开发 > C++ > 正文

C++private与public区别_C++访问修饰符深度解析

冰川箭仙
发布: 2025-12-16 15:48:07
原创
660人浏览过
private成员仅本类及友元可访问,public成员对所有代码开放;class默认private,struct默认public;设计上private保障数据安全,配合public接口实现封装。

c++private与public区别_c++访问修饰符深度解析

privatepublic 是 C++ 中最基础的两个访问修饰符,它们的核心区别在于:谁可以访问类内部的成员(变量或函数)。

访问权限范围不同

private 成员只能被本类的成员函数和友元(friend)访问,类外部、派生类(子类)都不能直接访问;public 成员则对所有人开放——类内、类外、派生类都可以自由访问。

  • 比如定义一个类 Person,把 age 设为 private,外部代码写 p.age = 25; 就会编译报错
  • 而把 getName() 设为 public,就能在 main() 里正常调用:p.getName();

设计意图与封装原则

private 不是“藏起来不让看”,而是为了控制数据修改入口,保证对象状态的一致性和安全性。比如银行账户余额,不能让外部随意赋值,必须通过 deposit() 或 withdraw() 这类受控操作来改变。

  • 典型做法:把数据成员设为 private,配套提供 public 的 getter/setter 函数
  • 这样可以在 setter 中加入校验逻辑,比如禁止设置负数年龄
  • 后续如果内部实现换算法或加缓存,只要接口不变,外部代码完全不用改

继承中的行为差异

public 继承时,基类的 public 成员在派生类中仍是 public,private 成员则不可见;但 private 成员在派生类中依然存在,只是无法直接访问。

晓象AI资讯阅读神器
晓象AI资讯阅读神器

晓象-AI时代的资讯阅读神器

晓象AI资讯阅读神器 72
查看详情 晓象AI资讯阅读神器

立即学习C++免费学习笔记(深入)”;

  • 如果希望派生类能访问但外部不能,可用 protected —— 它介于 private 和 public 之间
  • 注意:即使派生类不能访问基类的 private 成员,构造函数仍会调用基类的 private 构造函数(只要它是可访问的)
  • private 继承本身较罕见,此时基类的 public/protected 成员在派生类中都变成 private

默认访问级别容易忽略

class 定义中,如果不写访问修饰符,所有成员默认是 private;而 struct 默认是 public。这点常被初学者误用,导致意外的访问限制或暴露。

  • class A { int x; }; → x 是 private
  • struct B { int y; }; → y 是 public
  • 建议显式写出 private/public,避免依赖默认规则,提升代码可读性

基本上就这些。掌握好 private 和 public 的边界,是写出安全、可维护 C++ 类的第一步。

以上就是C++private与public区别_C++访问修饰符深度解析的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号