0

0

C++类中的访问控制如何工作 public protected private权限解析

P粉602998670

P粉602998670

发布时间:2025-06-28 13:32:02

|

666人浏览过

|

来源于php中文网

原创

public++、protected和private是c++中控制类成员访问权限的关键字。public成员可被任意访问,适用于接口方法;protected成员仅本类及子类可访问,适合基类共享逻辑;private成员仅本类可访问,用于数据封装;友元可突破限制访问私有成员。掌握三者使用有助于实现封装与代码维护。

C++类中的访问控制如何工作 public protected private权限解析

在C++类中,访问控制是通过三个关键字来实现的:publicprotectedprivate。它们决定了类成员(包括变量和方法)在不同作用域下的可见性和访问权限。理解这三者的区别,对于写出安全、可维护的面向对象代码非常重要。

C++类中的访问控制如何工作 public protected private权限解析

下面从实际使用角度出发,讲讲这三个访问修饰符各自的行为特点和适用场景。

C++类中的访问控制如何工作 public protected private权限解析

public 成员:对外公开,谁都能访问

只要把成员声明为 public,那么这个成员就可以被类的实例直接访问,也可以在类的内部、派生类中以及外部函数访问。

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

举个例子:

C++类中的访问控制如何工作 public protected private权限解析
class MyClass {
public:
    int value;
};

MyClass obj;
obj.value = 10; // 合法访问

使用建议:

  • 一般用于接口方法(如构造函数、析构函数、常用操作函数)
  • 尽量避免将数据成员设为 public,除非你明确知道后果
  • 接口清晰时可以提升易用性,但也增加了暴露风险

private 成员:只对本类开放,外部和子类都看不到

private 是最严格的访问限制。只有定义它的那个类的成员函数才能访问它,派生类和外部都无法访问。

sematic
sematic

一个开源的机器学习平台

下载

例如:

class Base {
private:
    int secret;
};

class Derived : public Base {};

Base b;
// b.secret = 42;  // 错误!无法访问 private 成员

常见用途:

  • 数据封装,防止外部随意修改内部状态
  • 隐藏实现细节,提高安全性
  • 搭配 getter/setter 使用更安全

protected 成员:本类 + 子类能访问,外部不能

protected 成员可以在当前类及其派生类中访问,但对外不可见。

比如:

class Base {
protected:
    int data;
};

class Derived : public Base {
public:
    void set(int d) { data = d; } // 可以访问
};

典型应用场景:

  • 设计基类时希望某些成员不对外暴露,但允许子类继承使用
  • 实现共享的内部逻辑,而不想让外部直接操作
  • 协助实现多态或继承体系中的协作机制

总结一下三者的关系

  • public:谁都可以访问
  • protected:自己和子类可以访问
  • private:只有自己可以访问

还有一个小点容易忽略的是:友元函数或友元类可以突破访问限制,即使某个成员是 private 的,友元也能访问。


基本上就这些。访问控制的核心目的就是“封装”——隐藏实现细节,同时提供可控的访问方式。掌握好 public、protected 和 private 的使用,有助于写出结构清晰、易于维护的 C++ 类设计。

相关专题

更多
go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

54

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

46

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

14

2025.11.27

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

989

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

50

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

195

2025.12.29

vlookup函数使用大全
vlookup函数使用大全

本专题整合了vlookup函数相关 教程,阅读专题下面的文章了解更多详细内容。

28

2025.12.30

金山文档相关教程
金山文档相关教程

本专题整合了金山文档相关教程,阅读专题下面的文章了解更多详细操作。

29

2025.12.30

PS反选快捷键
PS反选快捷键

本专题整合了ps反选快捷键介绍,阅读下面的文章找到答案。

25

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 5.6万人学习

C 教程
C 教程

共75课时 | 3.8万人学习

C++教程
C++教程

共115课时 | 10.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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