朋友功能和朋友班级之间的区别

作者: Laura McKinney
创建日期: 1 四月 2021
更新日期: 17 可能 2024
Anonim
樱花校园:和好朋友一个班级的好处!一起吃饭上课,太开心了
视频: 樱花校园:和好朋友一个班级的好处!一起吃饭上课,太开心了

内容


Friend函数和friend类是用于通过使用friend关键字访问类的私有成员的技术。朋友功能和朋友类之间的共同区别是,当使用朋友功能时,可以访问私有类成员,但在朋友类中,只能访问朋友类的名称,而不能访问类的私有成员。

朋友功能 函数或类使用它是否会对面向对象的框架产生负面影响,因为它削弱了 封装 这是对的 面向对象 范例。这就是必须明智使用朋友功能的原因,否则可能 打破资料隐藏 代码。

此朋友功能既不是 可交换的 而且也不 及物。 X是Y的朋友并不能推​​断Y也是X的朋友。如果X是Y的朋友而Y是Z的朋友,则并不意味着X是Z的朋友。

    1. 比较表
    2. 定义
    3. 关键差异
    4. 结论

比较表

比较依据朋友功能朋友班
基本的它是一个与friend关键字一起使用的函数,用于授予非成员函数对类的私有成员的访问权限。它是一个与friend关键字一起使用的类,用于访问另一个类的私有成员。
提前申报必须使用。不是强制性的。
采用朋友功能可用于某些操作员重载的情况。当在另一个类的顶部创建一个类时,可以使用一个朋友类。

朋友功能的定义

朋友功能 用于通过允许非成员函数获得访问权限来访问类的私有成员和受保护成员。在这种类型的函数中,在声明时,在函数名称之前使用friend关键字。对朋友功能有一些限制条件。第一个条件是,朋友功能不会被子类继承。第二个条件是在朋友函数中可能不存在存储类说明符,这意味着不能将其声明为static和extern。


不会通过类的调用对象来调用friend函数。朋友函数的示例包括:全局函数,类的成员函数,函数模板可以是朋友函数。让我们借助示例来了解它。

#包括 使用名称空间std;类优先{int数据; public:first(int i):data(i){}无效的朋友显示(const first&a); }; void display(const first&a){cout <<“ data =” <使用命名空间标准; class First {// //声明一个朋友类,朋友类,第二个; public:First():a(0){} void(){cout <<“结果为” << a << endl; } private:int a; }; class Second {public:void change(First&yclass,int x){yclass.a = x; }; int main()第一个obj1;第二个obj2; obj1。(); obj2.change(obj1,5); obj1。(); //输出结果为0结果为5

  1. Friend函数是一种能够访问类的私有成员和受保护成员的函数。相反,朋友班是帮助访问班的私人成员的班。
  2. 通过将其原型包含在类中来声明一个朋友函数,并在其前面加上关键字friend。同样,还使用关键字friend定义了朋友类。
  3. 在与朋友函数相对的情况下使用正向声明,因此不必在朋友类中使用它。

结论

当一个函数需要访问两个或多个独立的类(内部成员)时,需要一个friend函数。另一方面,当一个类需要访问另一个类的成员时,则需要一个朋友类。当多个成员函数需要成为该函数的朋友时,在这种情况下,最好使用Friends类。