友元c++

C++快速入门 第二十讲:一种特殊的友情关系——友元关系

友元关系是类之间的一种特殊关系,这种关系不仅允许友元类访问对方的public方法和属性,还允许友元访问对方的protected和private方法和属性。

实例1:友元关系访问保护量

复制代码

 1 #include <iostream>
 2 #include <string>
 3 
 4 using namespace std;
 5 class Lovers//爱人关系,基类 
 6 {
 7 public:
 8     Lovers(string theName);//
 9     void kiss(Lovers *lover);
10     void ask(Lovers *lover, string something);
11     
12 protected:
13     string name;
14     
15     friend class Others; //祸根,交友不慎。。。。 (友元关系),则Others可以访问name 
16 };
17 
18 class Boyfriend:public Lovers//Boyfriend子类,继承Lovers基类 
19 {
20 public:
21     Boyfriend(string theName);
22 };
23 class Girlfriend:public Lovers//girlfriend子类,继承Lovers基类 
24 {
25 public:
26     Girlfriend(string theName);
27 };
28 
29 class Others//Others类 ,并没继承Lovers基类 
30 {
31 public:
32     Others(string theName);
33     void kiss(Lovers *lover);
34     
35 protected:
36     string name;
37 };
38 
39 Lovers::Lovers(string theName)//Lovers类的构造函数 
40 {
41     name = theName;
42 }
43 void Lovers::kiss(Lovers *lover)//Lovers *lover表示定义Lovers类的一个对象*lover 
44 {
45     cout << name << "亲亲我们家的" << lover->name << endl;
46 } 
47 void Lovers::ask(Lovers *lover,string something)
48 {
49     cout << "宝贝儿" << lover->name << "帮我" << something << endl;
50 }
51 Boyfriend::Boyfriend(string theName):Lovers(theName)
52 {
53 }
54 Girlfriend::Girlfriend(string theName):Lovers(theName)
55 {
56 }
57 Others::Others(string theName)
58 {
59     name = theName;
60 }
61 void Others::kiss(Lovers *lover)
62 {
63     cout << name << "亲一下" << lover->name << endl;
64 }
65 int main()
66 {
67     Boyfriend boyfriend("A君");
68     Girlfriend girlfriend("B妞");
69     
70     Others others("路人甲");
71     
72     girlfriend.kiss(&boyfriend);
73     girlfriend.ask(&boyfriend,"洗衣服啦");
74     
75     cout << "\n当当当当!传说中的路人甲登场啦。。。。\n";
76     others.kiss(&girlfriend);
77     
78     return 0; 
79 }
  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值