C++之友元函数和友元类

来源:互联网 发布:淘宝店铺收藏和关注 编辑:程序博客网 时间:2024/05/21 08:43

一、友元函数和友元类

1.1为什么要使用友元函数

    在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。

    实际上具体大概有下面两种情况需要使用友元函数:(1)运算符重载的某些场合需要使用友元。(2)两个类要共享数据的时候。

 

1.2特点

     友元函数在类中只有声明,没有实现,友元函数不是类的内部函数,是一个全局函数

   友元函数的声明 不受类的访问控制 限制,可以放在类内部的任意位置

     友元函数破坏了类的封装性

1.3声明

     friend 用来声明 友元函数:可以访问类的私有成员变量

友元类

friend也可以用来声明友元类

友元类中所有函数都是该类的友元函数

友员类通常设计为一种对数据操作或类之间传递消息的辅助类


#include <stdio.h>class Test2_2;class Test2_1{friend void printA(Test2_1 &obj);//声明友元函数friend Test2_2;  //声明友元类public:Test2_1 (int a){this->a = a;}void print(){printf ("a = %d\n", a);}private:int a;};class Test2_2{public:void print(Test2_1 &obj){printf ("a = %d\n", obj.a);}private:int a;};void printA(Test2_1 &obj){// 私有成员不能访问printf ("a = %d\n", obj.a);}int main2_1(){Test2_1 a(10);a.print();printA(a);return 0;}


 

原创粉丝点击