除非明确规定

本文通过一个具体的C++编程示例介绍了如何利用友元类访问一个类的私有成员。解释了为何需要先声明一个空的类,并探讨了友元关系的特点及其不对称性和非传递性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// friend class
#include <iostream>
using namespace std;

class Square;

class Rectangle {
    int width, height;
  public:
    int area ()
      {return (width * height);}
    void convert (Square a);
};

class Square {
  friend class Rectangle;
  private:
    int side;
  public:
    Square (int a) : side(a) {}
};

void Rectangle::convert (Square a) {
  width = a.side;
  height = a.side;
}
  
int main () {
  Rectangle rect;
  Square sqr (4);
  rect.convert(sqr);
  cout << rect.area();
  return 0;
}

在这个例子中,类矩形类的成员函数的矩形方允许访问方私有的和受保护的成员的一个朋友。更具体地说,矩形访问成员变量平方::侧,它描述了一侧的广场。

还有别的东西在这个新的例子:在程序的开始,有一个空的声明类广场。这是必要的因为类矩形使用方(如成员转换参数),和方使用矩形(宣布它的朋友)。

友谊是没有相应的规定:除非在我们的例子中,矩形被方朋友类,但方不被认为是矩形的一个朋友。因此,长方形的成员函数可以访问受保护的和私有成员方而不是周围的其他方法。当然,如果需要方也被宣布的朋友,矩形,授予该访问。

另一个属性的友谊是不及物动词:一个朋友的朋友是不被认为是朋友,除非明确规定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值