首页 > 代码库 > C++友元函数举例说明
C++友元函数举例说明
1、什么是友元函数?
有时候我们需要用一个普通的函数直接的调用类A的成员变量,或者类B的成员函数需要直接调用类A的成员变量,来实现数据的共享。这个时候,为了减少系统的开销,提高程序执行的效率,我们就需要使用“友元函数”的概率。即“友元”的目的是为了方便实现数据的共享。它的优点是:使得程序简洁、直观、高效,缺点是:破坏了类的封装性。因此,只有在迫不得已的情况下为了简化程序设计才使用友元。
2、友元函数分类:
友元函数大体上可以分为三类:1)普通函数最为类的友元函数使用;2)友元类:类B的所有成员函数都是类A的友元;3)类B的成员函数作为类A的友元函数。
3、举例说明:
1)普通函数最为类的友元函数使用:在类Test的定义中声明普通函数disp()为其友元函数,那么函数disp()就可以使用类Test的成员变量。具体代码实现如下:
1 #include <iostream> 2 3 using namespace std; 4 5 class Test{ 6 public: 7 Test() 8 { 9 a = 1; 10 b = 2; 11 } 12 friend void disp(Test v); 13 private: 14 int a; 15 int b; 16 }; 17 18 void disp(Test v) 19 { 20 cout<<v.a<<" "<<v.b<<endl; 21 } 22 23 24 void main() 25 { 26 Test v; 27 disp(v); 28 }
2)友元类:类B的所有成员函数都是类A的友元,提供了两个类共享同一数据的手段。具体演示代码如下:
1 #include <iostream> 2 3 using namespace std; 4 5 class TestB; 6 class TestA{ 7 public: 8 TestA() 9 { 10 a = 1; 11 b = 2; 12 } 13 private: 14 int a; 15 int b; 16 friend TestB; 17 }; 18 19 class TestB{ 20 public: 21 void disp(TestA a) 22 { 23 cout<<a.a<<" "<<a.b<<endl; 24 } 25 }; 26 27 28 29 void main() 30 { 31 TestB b_demo; 32 TestA a_demo; 33 b_demo.disp(a_demo); 34 }
3)类B的成员函数作为类A的友元函数。具体演示代码如下:
1 #include <iostream> 2 3 using namespace std; 4 5 class TestA; 6 7 class TestB{ 8 public: 9 void disp(TestA a); 10 }; 11 12 class TestA{ 13 public: 14 TestA() 15 { 16 a = 1; 17 b = 2; 18 } 19 friend void TestB::disp(TestA a); 20 private: 21 int a; 22 int b; 23 24 }; 25 26 void TestB::disp(TestA a) 27 { 28 cout<<a.a<<" "<<a.b<<endl; 29 } 30 31 void main() 32 { 33 TestB b_demo; 34 TestA a_demo; 35 b_demo.disp(a_demo); 36 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。