博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++中的友元
阅读量:6816 次
发布时间:2019-06-26

本文共 2377 字,大约阅读时间需要 7 分钟。

友元函数

在类的声明中可以声明某一个函数作为该类的友元函数,然后该函数就可以访问类中的private数据成员了。

demo:

/*	wirten by qianshou	2013/12/6	04:13 pm	study at SDNU*/  #include
using namespace std;class Time{ public: Time(int h,int m,int s); friend void display(Time &t);//声明display函数为本类的友元成员函数 void show(); private: int hour; int minute; int second; };class Date{ public: Date(int,int,int); friend void display(Date &d);//声明display函数为本类的友元成员函数 private: int month; int day; int year; };Time::Time(int h,int m,int s)//Time的构造函数 { hour=h; minute=m; second=s;}void Time::show(){ cout<
<<":"<
<<":"<
<

display函数是类Date和Time的友元函数,通过重载函数dispaly(根据传递的参数不同),实现对Time类对象和Date类对象的输出。

程序输出结果:

/*****12/6/201312:30:45*******/

友元成员函数

在类A的定义中,声明类B的成员函数fun()作为类A的友元成员函数。那么类B的成员函数fun()就可以访问类A中的数据成员了。

demo:

/*	wirten by qianshou	2013/12/6	study at SDNU*/#include
using namespace std;class Date; //对类的提前声明 class Time{ public: Time(int h,int m,int s); void display(Date &d); private: int hour; int minute; int second; };class Date{ public: Date(int,int,int); friend void Time::display(Date &);//声明Time类中的display函数为本类的友元成员函数 private: int month; int day; int year; };Time::Time(int h,int m,int s) //Time的构造函数 { hour=h; minute=m; second=s;}void Time::display(Date &d) //对类Time中的成员函数display的定义 { cout<
<<"/"<
<<"/"<
<
在类Date中,声明了Time类中的display函数作为Date类的友元函数,因此在display函数中既可以访问Time类中的数据成员,又可以访问Date类中的数据成员。

程序输出结果:

/*****12/6/201312:30:45*******/

友元类

声明类B为类A的友元类,然后类B中的成员函数就可以访问类A中的数据成员了。但是,要注意友元的关系是单向的,即A声明了B是它的友元之后,B中的成员函数可以访问A中的private数据成员,但是A不能访问B中的private数据成员。

demo:

/*	wirten by qianshou	2013/12/6	study at SDNU*/#include
using namespace std;class Date; //对类的提前声明 class Time{ public: Time(int h,int m,int s); void display(Date &d); private: int hour; int minute; int second; };class Date{ public: Date(int,int,int); friend Time;//声明Time类是它的友元类 private: int month; int day; int year; };Time::Time(int h,int m,int s) //Time的构造函数 { hour=h; minute=m; second=s;}void Time::display(Date &d) //对类Time中的成员函数display的定义 { cout<
<<"/"<
<<"/"<
<

在Date类中声明了Time类作为它的友元类,所以Time类的成员函数display可以访问Date类中的私有成员。

程序输出结果:

/*****12/6/201312:30:45*******/

转载于:https://www.cnblogs.com/zhezh/p/3773502.html

你可能感兴趣的文章
基于Metronic的Bootstrap开发框架经验总结(15)-- 更新使用Metronic 4.75版本
查看>>
Kafka(二)-- 安装配置
查看>>
MapReduce&#160;图解流程
查看>>
网络安全基本概念
查看>>
[总结]高效的jQuery代码编写技巧总结
查看>>
有没有想过,也许一辈子你都是个小人物
查看>>
[LeetCode] Wildcard Matching
查看>>
Android开发系列(二十三):实现带图片提示的Toast提示信息框
查看>>
深入解析Windows窗体创建和消息分发
查看>>
AIX下RAC搭建 Oracle10G(六)dbca建库
查看>>
vs code 快捷键中英文对照
查看>>
systemd的运行级别与服务管理命令简介
查看>>
MVC5 一套Action的登录控制流程
查看>>
Linux下的两个经典宏定义 转
查看>>
报错stale element reference: element is not attached to the page document结局方案
查看>>
Redis源代码剖析--对象object
查看>>
【感悟】——人生路,昂首走
查看>>
Testbench
查看>>
HNOI2015题解
查看>>
【项目实战】多线程环境下正确创建单例
查看>>