西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发VC|VC++ → C++中的友元关系浅析

C++中的友元关系浅析

相关软件相关文章发表评论 来源:本站整理时间:2010/9/4 22:28:20字体大小:A-A+

作者:佚名点击:50次评论:0次标签: C++ 友元

  • 类型:塔防游戏大小:34.5M语言:中文 评分:10.0
  • 标签:
立即下载

在封装中C++类数据成员大多情况是private属性;但是如果接口采用多参数实现肯定程序效率;然而这时候如果外界需要频繁访问这些私有成员,就不得不需要一个既安全又理想的“后门”——友元关系;

C++中提供三种友元关系的实现方式,友元函数、有缘成员函数、友元类。

友元函数:既将一个普通的函数在一个类中说明为一个friend属性;其定义(大多数会访问该类的成员)应在类后;

友元成员函数:既然是成员函数,那么肯定这个函数属于某个类,对了就是因为这个函数是另外一个类的成员函数,有时候因为我们想用一个类通过一个接口去访问另外一个类的信息,然而这个信息只能是被它授权的类才能访问;那么也需要用friend去实现;这个概念只是在声明的时候少有变化;

友元类:友元类声明会将整个类说明成为另一个类的友元关系;和之前两种的区别是集体和个人的区别;友元类的所有成员函数都可以是另一个类的友元函数;

值得注意的是友元关系是单向的,有点像我们恋爱中出现的单相思 O(∩_∩)O,单向关系就是说如果A被说明称B的友元关系,那么只能说A是B的友元,并不代表B是A的友元;其次在多数情况下友元关系的函数都会访问它被说明中类的成员,这时候应该将函数定义在类的后面;

下面给一个简单的例程代码;

1 #include <iostream>
2
3 using namespace std;
4
5 class B;
6
7 class A{
8 private:
9 int x;
10 public:
11 A();
12 void display(B &);
13 };
14
15 class C;
16
17 class B{
18 private:
19 int y;
20 int z;
21 public:
22 B();
23 B(int, int);
24 friend void A::display(B &);//友元成员函数
25 friend void display(B &);//友元函数
26 friend class C;//友元类
27 };
28
29 class C{
30 private:
31 int sum;
32 void calc(B &);
33 public:
34 C();
35 void display(B &);
36 };
37
38 //必须在友元关系的类后进行定义
39 void display(B &v)//友元成员函数
40 {
41 cout << v.y << " " << v.z << endl;
42 }
43
44 A::A()
45 {
46 this->x = 0;
47 }
48
49 void A::display(B &v)//友元成员函数
50 {
51 this->x = v.y + v.z;
52 cout << this->x << endl;
53 }
54
55 B::B()
56 {
57 this->y = 0;
58 this->z = 0;
59 }
60
61 B::B(int y, int z)
62 {
63 this->y = y;
64 this->z = z;
65 }
66
67 C::C()
68 {
69 sum = 0;
70 }
71
72 void C::display(B &v)
73 {
74 this->calc(v);
75 cout << sum << " = " << v.y << " + " << v.z << endl;
76 }
77
78 void C::calc(B &v)
79 {
80 sum = v.y + v.z;
81 }
82
83 int main()
84 {
85 A a;
86 B b(2, 3);
87 display(b);
88 a.display(b);
89 C c;
90 c.display(b);
91
92 return 0;
93 }
94

    魔兽塔防地图
    (300)魔兽塔防地图
    塔防,即炮塔防御的简称,也称。塔防受众很广,游戏模式简单而可玩性强,是智力和策略的比拼。当塔防与这两种游戏类型融合在一起的话,游戏就会变得更好玩,同时也很休闲。小编在这里为大家搜集整理了许多魔兽争霸塔防地图,欢迎感兴趣的玩家们前来下载。...更多>>
    塔防游戏
    (70)塔防游戏
    西西游戏网提供最新最热门的塔防游戏,塔防游戏顾名思义就是炮塔防守游戏,玩家需要建造炮塔轰炸一些进攻的敌人保卫家园,塔防游戏操作都很简单,就是在最合理的位置放置炮塔,无需其他的操作,可能有的塔防游戏会添加一些技能,但是也没什么难度的哦.热门游戏保卫萝卜兽人必须死炮塔防御塔防三国志等等,太多了。...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)