C++程序访问类的私有成员

c++程序访问类的私有成员

类的私有成员只能被类的成员访问。这样做是为了保持面向对象的封装原则,确保数据及其相关函数被保存在一个单元中,并且只能从该类的成员访问。C++有三种不同的访问控制符来指定类的成员的可见性。这三种访问控制符是−

Public − 如果一个类的成员具有public可见性,那么这些成员可以从任何其他类中访问。

Private − 具有私有可见性的类成员只能从类内部访问。

Protected − protected class members can be accessed from with9in the class or from its subclasses only.

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

对于这篇文章,我们将仅关注访问类的私有成员。

使用getter和setter方法来访问数据成员

Getter和setter函数用于访问和修改类的私有成员。顾名思义,getter函数返回数据成员,而setter函数用于“设置”或修改数据成员。我们通过两个例子来进一步理解这个概念,但在此之前,给出基本语法如下。

语法

Getter/ Accessor functions −

private:    value;public:    getterFunction() {     return  this->value;   }

登录后复制

Setter/Mutator函数−

private:    value;public:   void setterFunction( _value) {     this->value = _value;   }

登录后复制

Example

的中文翻译为:

示例

#include using namespace std;class Test{   private:      int value;   public:      //the getter function      int getValue() {         return this->value;      }      //the setter function      void setValue(int _value) {         this->value = _value;      }};int main(){   Test test;   test.setValue(15);   cout 

输出

The value we set is: 15

登录后复制

从另一个函数内部访问成员函数

当我们访问一个私有成员函数时,情况是一样的。我们必须以与访问数据成员相同的方式从类成员方法内部访问它。我们可以使用“this”指针来避免名称冲突。

语法

private:    function_name(params) {};public:    another_function(params) {      var = this->function_name(arguments);   }

登录后复制

调用私有成员函数的函数应该声明为公共的。只有当从该类的对象调用公共函数时,该函数才会执行。

Example

的中文翻译为:

示例

#include using namespace std;class Test{   private:      int value;      //multiplies the member value by 10      void multiplyValue() {         this->value = this->value * 10;      }   public:      //the getvalue function calls the multiply value function      int multiplyAndGetValue() {         this->multiplyValue();         return this->value;      }      //the setter function      void setValue(int _value) {         this->value = _value;      }};int main(){   Test test;   test.setValue(15);   cout 

输出

The value after setting and multiplying is: 150

登录后复制

使用友元类

在C++中,友元类是一种可以访问其他类中不对其他类可见的私有和受保护成员的类。要将一个类声明为另一个类的友元类,需要使用关键字‘friend’。让我们看看它是如何工作的。

语法

class A{   private:     .....   friend class B;};class B{   //class body};

登录后复制

Example

的中文翻译为:

示例

#include using namespace std;class Test1{   private:      int value;   public:      Test1(int _value) {         this->value = _value;      }      //we declare another class as a friend      friend class Test2;};class Test2{  public:   //displays the value of the other class object   void display(Test1 &t) {      cout 

输出

The value of Test1 object is: 15

登录后复制

使用友元函数

在C++中,友元函数类似于友元类。在这里,我们可以将一个不是类成员的特定函数声明为“友元”,并且它将获得访问类的私有成员的权限。让我们来看一下如何将一个函数定义为“友元”的语法。

语法

class A{   private:     .....   friend  function_name(params);}; function_name(params) {   //function body}

登录后复制

Example

的中文翻译为:

示例

#include using namespace std;class Test1{   private:      int value;   public:      Test1(int _value) {         this->value = _value;      }      //we declare a friend function      friend void display(Test1);};void display(Test1 t) {   cout 

输出

The value of Test1 object is: 55

登录后复制

结论

当我们访问一个类的私有数据成员时,最好使用访问器/获取器和修改器/设置器函数。这是访问类的数据成员的最安全的方式。要始终记住的一件事是,访问私有成员的函数应该声明为公共的。友元函数在其他面向对象的语言中不可用,因为这并不总是保持面向对象封装的属性。友元关系是不对称的,如果类A声明类B为友元,那么类B将可以访问A的所有成员,但A将无法访问B的所有私有成员。

以上就是C++程序访问类的私有成员的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2583019.html

(0)
上一篇 2025年3月6日 14:27:50
下一篇 2025年2月19日 09:52:01

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用C++中的sizeof运算符的结果

    Sizeof 运算符是 C 语言中最常用的运算符之一,用于计算我们传递的任何数据结构或数据类型的大小。 sizeof 运算符返回无符号整数类型,该运算符可应用于原始数据类型和复合数据类型。我们可以直接对数据类型使用 sizeof 运算符并了…

    2025年3月6日
    200
  • 解释C语言中的volatile和restrict类型限定符,并附上一个示例

    类型限定符向 c 编程语言中的现有数据类型添加特殊属性。 C 语言中存在三种类型限定符,其中 volatile 和限制类型限定符解释如下 – Volatile A易失性类型限定符用于告诉编译器变量是共享的。也就是说,如果变量被声…

    2025年3月6日
    200
  • 重新排列一个数组,如果在C++中,’arr’是’j’,则使’arr’变为’i’

    我们被给定一个正整数类型的数组,假设是arr[],它的大小可以任意给定,数组中的元素的值应该大于0但小于数组的大小。任务是重新排列一个数组,如果 arr[j] 是“j”,那么 arr[j] 就变成“i”并打印最终结果。 让我们看看这种情况的…

    2025年3月6日
    200
  • 如何使用C++中的深度优先搜索算法

    如何使用C++中的深度优先搜索算法 深度优先搜索(DFS)算法是一种用于遍历或搜索图或树的算法,它从一个根节点开始,尽可能深地探索图的分支,直到不能继续为止,然后返回并探索其他分支。在许多问题中,DFS是一种非常有用的解决方法,如图的连通性…

    2025年3月6日
    200
  • 如何使用C++中的搜索算法

    如何使用C++中的搜索算法 搜索算法是计算机科学中一种非常重要的算法,它用于在一个数据集合中查找特定的元素。C++语言提供了许多内置的搜索算法,如线性搜索、二分搜索等。本文将介绍如何使用C++中的搜索算法,并提供具体的代码示例。 一、线性搜…

    2025年3月6日
    200
  • 如何使用C++中的插值搜索算法

    如何使用C++中的插值搜索算法 导言:在许多应用程序中,我们常常需要在有序数组或有序数据集合中进行搜索和查找特定的元素。传统的二分搜索算法是最常用的方法之一,但在某些情况下,它可能不够高效。插值搜索算法是一种改进的搜索算法,它可以根据已知数…

    2025年3月6日
    200
  • 如何使用C++中的插入排序算法

    使用C++中的插入排序算法实现数组排序 插入排序是一种简单但有效的排序算法,它将待排序的元素一个一个地插入已排序的列表中,最终得到一个有序的列表。本文将介绍如何使用C++编程语言实现插入排序算法,并给出具体的代码示例。 算法思想:插入排序的…

    2025年3月6日
    200
  • 如何使用C++中的八皇后问题算法

    如何使用C++中的八皇后问题算法 八皇后问题是一个经典的算法问题,要求在8×8的棋盘上放置八个皇后,使得任意两个皇后都不能互相攻击,即任意两个皇后不能处于同一行、同一列或者同一对角线上。解决八皇后问题的算法有很多,其中一种常见的方…

    2025年3月6日
    200
  • 如何使用C++中的基数排序算法

    如何使用C++中的基数排序算法 基数排序算法是一种非比较性的排序算法,它通过将待排序的元素分割成一组有限的数字位来完成排序。在C++中,我们可以使用基数排序算法来对一组整数进行排序。下面我们将详细讨论如何实现基数排序算法,并附上具体的代码示…

    2025年3月6日
    200
  • 如何使用C++中的最小公倍数算法

    如何使用C++中的最小公倍数算法 最小公倍数(Least Common Multiple,简称LCM)是指两个或多个整数公有的倍数中最小的那一个。在数学和计算机科学中,求最小公倍数是一个常见的问题,而C++提供了一种简单而有效的方法来计算最…

    2025年3月6日
    200

发表回复

登录后才能评论