C++进阶—>friend
来源:互联网 发布:av马赛克去除软件mac 编辑:程序博客网 时间:2024/06/06 14:20
0.前言
friend友元,顾名思义是好朋友的意思,即我是你的好朋友,你所私有的东西会跟我分享,为我所用;通常分为友元函数和友元类。
1.友元函数
1)友元函数能够访问类中的私有变量;
2)友元函数可以定义在类中的任何位置,public、protected、private中均可;
3)友元函数为全局函数,在实现中无需加上类标识;
4)函数参数为类的对象,以便对类成员进行操作;
5)常用于对运算符或系统函数的重载。
说明:若要定义某个函数能够实现对某类变量操作,不管该函数是系统函数还是其他函数,均可通过在某类中使用friend关键字 定义友元函数,通过该友元函数可以实现对某类的操作,在友元函数的参数为类对象。
例子:
class AB{public:AB(){this->a=888;this->b=666;}AB(int a,int b){this->a=a;this->b=b;}friend void modifya(AB &ab);//void modifyb(AB &ab);void Print(){cout<<a<<b<<endl;}private:int a ;int b ;};void modifya(AB &ab){ab.a=88;}void main(){AB aaa;modifya(aaa);aaa.modifyb(aaa);aaa.Print();system("pause");return;}
2.友元类
1)若B类是A类的友员类,则B类的所有成员函数都是A类的友员函数;
2)友员类通常设计为一种对数据操作或类之间传递消息的辅助类;
3)友元类中需要定义类对象,如B类是A类的友员类,则B中要定义一个A的对象,以便对A进行操作。
例子:
class A{public:friend class B;//B类 是 A的好朋友 ,在B中可以访问A类的私有成员 私有函数//1 声明的位置 和 public private没有关系friend void modifyA(A *pA, int _a); //2 函数modifyA 是 类A的好朋友A(int a=0, int b=0){this->a = a;this->b = b;}int getA(){return this->a;}private:int a;int b;};// void modifyA(A *pA, int _a){//pA->a = 100;pA->a = _a;}//class B{public:void Set(int a){Aobject.a = a;}void printB(){cout<<Aobject.a <<endl;}private:A Aobject;};void main(){B b1;b1.Set(300);b1.printB();system("pause");}
阅读全文
1 0
- C++进阶—>friend
- C++——friend
- [C++]friend
- [C++] friend class
- C++::Class Friend
- C++:友元函数friend
- C++friend用法简单总结
- C++-友元(friend)
- friend
- friend
- Friend
- Friend
- friend
- friend
- Friend
- friend
- Friend
- Friend
- java算法之动态规划基本思想以及具体案例
- 关系型数据库和非关系型数据库的区别?
- 标志坏的扇区,强迫不让文件系统写入
- Some frequent operation of the git
- iMindMap在教学中的实际应用
- C++进阶—>friend
- 第三方类库-Core核心库-Apache Commons Lang-1
- Lucene&全文检索
- java 使用webmagic 爬虫框架爬取博客园数据存入数据库
- win10系统很快自动休眠的解决方法
- Instruments 中 Core Animation优化(二)
- 写一个单例
- 从开发到部署会用到的 Docker 命令【已翻译100%】
- 手机运营商匹配