C++语法小记---友元

友元函数
  • 延续C语言的结构体编程方式,直接访问类的私有成员,提高效率

  • 友元分为函数友元和类友元

    • 友元函数可以访问类的所有成员

    • 友元类的所有成员函数都是友元函数

  • 友元不具备传递性

  • 友元函数和类的成员函数的区别

    • 友元函数不是类的成员,只是声明

    • 成员函数有this指针,而友元函数没有this指针

  • 开发中不建议使用友元函数,破坏了类的封装性

 

函数友元例子

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 class Test
 6 {
 7 private:
 8     int a;
 9 
10 public:
11     Test() { a = 0;}
12     
13     Test(int a) {this->a = a;}
14 
15     void show()
16     {
17         cout << "a = " << a << endl;
18     }
19     
20     friend void g_show(Test t);
21 };
22 
23 void g_show(Test t)
24 {
25     cout << "[g_show] t.a = " << t.a << endl;
26     return;
27 }
28 
29 int main()
30 {
31     Test t(1);
32     t.show();
33     g_show(t);
34     return 0;
35 }

 

类友元例子

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 class Test
 6 {
 7 private:
 8     int a;
 9 
10 public:
11     Test() { a = 0;}
12     
13     Test(int a) {this->a = a;}
14     
15     friend class Friend;
16 };
17 
18 class Friend
19 {
20 private:
21     Test t;
22     
23 public:
24     Friend() : t(10) {}
25     
26     void show()
27     {
28         cout << "Friend t.a = " << t.a << endl;
29     }
30 };
31 
32 int main()
33 {
34     Friend f;
35     f.show();
36 
37     return 0;
38 }

 

转载于:https://www.cnblogs.com/chusiyong/p/11293947.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值