在 C++ 中访问类成员28 Aug 2024 | 5 分钟阅读 C++ 是一种功能强大且灵活的编程语言,以其面向对象的特性而闻名。封装是面向对象编程 (OOP) 的核心概念之一,它使我们能够隐藏类的内部特性,并仅将必要的功能暴露给外部世界。为此,C++ 提供了许多访问修饰符来规范类成员的可见性,例如public、private和protected。在本文中,我们将通过大量的示例和解释,研究这些访问修饰符并学习如何在 C++ 中访问类成员。 访问修饰符概述访问修饰符控制类成员(变量和函数)在类中的可见性和使用。C++ 中有三种主要的访问修饰符 公共 任何被指定为public的成员,无论是类的内部还是外部,都可以访问。此修饰符提供了最广泛的可见性,允许从程序的任何区域访问成员。 私有 只有定义它们的类的成员才能访问私有成员。它们非常适合存储内部实现细节,因为它们对外部世界是隐藏的。 Protected 被指定为protected的成员与private 成员略有不同。它们可以从类及其派生类访问。如果我们希望仅为子类提供一定程度的访问权限,通常会使用 protected 成员。 访问公共类成员让我们首先检查如何访问公共类的成员。我们可以在程序的任何地方访问公共成员。 程序 让我们举一个例子来演示如何在 C++ 中访问公共类成员。 输出 This is a public function. Accessing publicVar from outside the class: 42 说明 在这个例子中,PublicVar和publicFunction是MyClass类的公共成员。我们在main 方法内部创建了一个名为obj的MyClass对象。publicVar成员可以直接从类外部访问、修改和调用,publicFunction成员也是如此。 我们可以看到公共成员可以随时随地被任何人访问。因此,它们应该用于必须从系统外部访问的接口元素。 访问私有类成员只有定义它们的类的成员才能访问私有成员。如果我们尝试从类外部访问私有成员,将会出现编译错误。 程序 让我们举一个例子来演示如何在 C++ 中访问私有类成员。 输出 This is a private function. 说明 在上面的例子中,声明了 MyClass 类的私有成员 privateVar 和 privateFunction。私有成员不能从类外部访问。因此,如果我们取消注释尝试直接访问 privateVar 的行,将导致编译错误。 我们提供了公共成员函数 accessPrivateFunction 和 setPrivateVar 来间接访问私有成员。在 C++ 中,强制执行封装和管理对敏感信息和实现细节的访问是常见的做法。 根据输出,私有函数 privateFunction 可以通过公共成员函数 accessPrivateFunction 访问。同样,我们使用公共成员方法 setPrivateVar 来设置 privateVar 的值。 访问受保护类的成员私有成员和受保护成员都限制从类外部直接访问。然而,它们之间存在显著差异,即派生类(子类)可以访问受保护成员。 程序 让我们举一个例子来演示如何在 C++ 中访问受保护类成员。 输出 Accessing protectedVar from a derived class: 42 说明 在这个例子中,ProtectedVar 被指定为 MyBaseClass 的受保护成员。MyDerivedClass 是从 MyBaseClass 派生出来的类。我们在 main 中构造一个 MyDerivedClass 对象,并尝试直接访问 protectedVar。然而,这将导致编译问题。 相反,我们使用 MyBaseClass 的公共成员函数来访问 protectedVar。protectedVar 函数的值使用 setProtectedVar 函数设置,其值使用 getProtectedVar 函数检索。这些函数允许派生类 MyDerivedClass 访问 protectedVar,证明了 protected 访问修饰符的使用。 访问修饰符的正确使用在回顾了 C++ 的三个访问修饰符之后,让我们讨论何时使用每个修饰符。
结论在 C++ 中创建可靠和可维护的代码需要理解和掌握访问修饰符。我们可以通过遵循封装原则并使用public、private和protected访问修饰符管理类成员的可见性来设计高效且安全的类。 总之,公共成员建立了类的接口,并且可以从任何地方访问。私有成员用于内部实现细节,并对公众隐藏。派生类可以访问受保护成员,为子类提供一种受限的获取信息机制。 下一主题C++ 中的邻接表 |
字符串操作是处理和处理 C 和 C++ 计算机语言中文本数据的重要组成部分。C 标准库提供了一个有用的方法 strspn(),可用于计算字符串中第一个段的长度,该段...
阅读 4 分钟
在本文中,您将学习 C++ 中的 thread_local 及其语法和示例。什么是 thread_local?thread_local 关键字允许您声明具有线程局部存储持续时间的变量。这意味着访问该变量的每个线程都将获得该变量的副本。语法:它具有...
5 分钟阅读
简介:由于其动态大小和易用性,vector 是 C++ 中最常用的数据结构之一。它们通过允许您在单个连续内存块中存储和检索元素,为您提供灵活性和快速的元素检索。您将获得一个……
阅读 6 分钟
如果你处理视觉效果,编写游戏需要扎实的编程技能以及对 OpenGL 和 DirectX 等几个 API 的深刻理解。对于 C++ 程序员来说,有几个游戏引擎可以简化这个过程。必需的头文件...
阅读 4 分钟
文件处理操作是 C++ 编程中非常重要的一部分。在大多数程序中,我们需要从文件读取或写入文件。在 C++ 中,我们可以使用文件处理库来执行文件操作。该库提供了几个允许我们...
阅读 3 分钟
作用域解析指针和“the”this 指针对于在软件开发敏捷生命周期方法论中实现有效的 C++ 程序和设计面向对象的过程至关重要。作用域解析运算符可帮助开发人员访问类成员或静态实体。关于...
阅读 3 分钟
游程长度编码(RLE)是一种简单的数据压缩方法,它用单个元素后跟重复次数来替换一系列相同的元素(如字母或数字)。有以下步骤:1. 编码扫描输入数据...
阅读 4 分钟
在 C++ 中,静态变量是一种变量,其生命周期延伸到程序的整个执行过程,但其作用域可以根据其定义位置进行限制。我们最近介绍了 static 关键字如何改变变量的行为,这确保了它的...
7 分钟阅读
在编程领域,数据是中心。数据的存储、操作和访问方式会对程序的效率和有效性产生重大影响。C++ 提供了抽象数据类型 (ADT) 的强大概念来促进这些任务。ADT 提供了...
阅读 4 分钟
C++ 中用于结束循环的循环控制语句称为 break。一旦循环内部遇到 break 语句,循环迭代就会结束,控制立即从循环转移到循环之后的第一个语句。 break;...
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India