C++ 访问修饰符

2025 年 6 月 6 日 | 阅读 5 分钟

在 C++ 中,访问修饰符主要用于定义类成员(如变量函数)从类外部的可访问性。它们通过限制对内部数据和实现细节的未经授权或无意访问,对封装非常有帮助。

访问修饰符允许我们控制从外部对类特定组件的访问。它还有助于保护数据免受无意更改或滥用。它确保只有类中旨在被程序其他部分使用的部分才显示,而敏感或内部细节则保持隐藏。它还有助于增强安全性、健壮性和代码模块化。

访问修饰符的类型

C++ 中,访问修饰符主要有三种类型,可以帮助定义类成员如何被访问。

Access Specifiers in C++

在这里,我们将逐一讨论这些访问修饰符。

公共访问修饰符

在 C++ 中,公共访问修饰符主要用于指定类成员可以从类的内部和外部的任何地方访问。这意味着任何函数或对象都可以访问类的公共成员。类的公共成员主要用于表示类的接口。

如果使用 public 关键字声明成员函数,则表示对其访问没有任何限制。它通常用于数据或函数必须易于被代码其他部分共享或访问的情况。

语法

它具有以下语法:

C++ 公共访问修饰符示例

让我们举一个例子来说明 C++ 中的公共访问修饰符。

示例

编译并运行

输出

The Title of Book is: The C++ Programming Guide

说明

在这个例子中,BookStore 类使用公共访问修饰符来允许对其 booktitle 属性和 showTitle() 方法进行无限制访问。在 main() 函数中,我们为 booktitle 赋值,然后调用该方法显示它。

私有访问修饰符

在 C++ 中,私有访问修饰符主要用于限制对类成员的访问。无论何时我们将成员函数声明为私有(使用 private 关键字),它只能被同一类的成员函数访问和更改。它不允许任何类外部的函数或对象直接访问。它确保了数据隐藏,允许我们保护对象的内部状态免受无意或未经授权的修改。

当我们在程序中使用私有成员时,类可以封装其内部细节,这些细节通过公共方法向外部世界显示必要的细节和功能。它有助于维护数据完整性和对类操作方式的控制。

语法

它具有以下语法:

C++ 私有访问修饰符示例

让我们举一个例子来说明 C++ 中的私有访问修饰符。

示例

编译并运行

输出

The Account Holder name is: John
The remaining amount is: $1380.27

说明

在这个例子中,我们演示了私有访问修饰符的使用,通过限制对 balance 变量的直接访问,该变量只能使用 setBalance() 公共方法进行更改和查看。

保护访问修饰符

在 C++ 中,保护访问修饰符主要用于指定类成员可以在类本身及其派生类中访问。这意味着任何类外部的函数或对象都不能访问类的保护成员。类的保护成员通常用于表示必须可供其派生类访问的类实现。

语法

它具有以下语法:

C++ 保护访问修饰符示例

让我们举一个例子来说明 C++ 中的保护访问修饰符。

示例

编译并运行

输出

The Manager Name is: John
The Salary is: $95000

说明

在这个例子中,我们演示了访问修饰符的使用。在这里,我们有一个 Employee 类,其中包含一个受保护的 salary 和一个公共的 name,以及一个 setSalary() 方法来设置 salary。之后,Manager 类继承自 Employee 并在其 Display() 方法中直接访问受保护的 salary。在 main() 函数中,我们创建一个 Manager 对象,设置 name 和 salary,并显示信息。

C++ 中的访问修饰符

这是一个显示 C++ 中访问修饰符的表格。

访问说明符同类派生类类外
公共访问修饰符是的是的是的
私有访问修饰符是的不能不能
保护访问修饰符是的是的不能

结论

总之,访问修饰符是面向对象编程的基本概念,因为它们控制类成员的访问和修改方式。这些修饰符在封装中非常有用,有助于确保数据安全、模块化和代码可维护性。

C++ 访问修饰符多选题

1) 下列哪个访问修饰符允许从类外部访问成员?

  1. private
  2. protected
  3. public
  4. static
 

答案: c) public


2) 在 C++ 中,类成员的默认访问修饰符是什么?

  1. private
  2. static
  3. public
  4. protected
 

答案: a) private


3) 下列哪个访问修饰符只允许访问类及其派生类?

  1. public
  2. private
  3. static
  4. protected
 

答案: d) protected


4) 如果我们尝试在 C++ 中从类外部访问私有成员,会发生什么?

  1. 它会正常工作
  2. 它会发出警告
  3. 它会导致编译时错误
  4. 它会切换到 public
 

答案: c) 它会导致编译时错误


5) 下列哪个访问修饰符的访问权限最低?

  1. public
  2. private
  3. protected
  4. virtual
 

答案: b) Private


下一主题C++ 模板