C++学习之友元函数(二)

上篇笔记中对于友元成员函数简单介绍一下结构,本篇主要通过另一实例,让类的封装性更好,编程走起来。程序中定义了两个类time,match。
time.h头文件

#ifndef TIME_H_INCLUDED
#define TIME_H_INCLUDED


#include "match.h"
//必须包含这个头文件,下面要用到里面的类
#include<iostream>
using namespace std;

class match;//必须包括这个类的声明,告诉编译器你先用着,我后面会定义

class time
{
  friend void match::printTime(time &t);//友元成员函数声明
public:

time(int hour,int min,int sec);

private:

int m_iHour;
int m_iMinute;
int m_iSecond;

};

#endif // TIME_H_INCLUDED

time.cpp源文件

#include"time.h"
//这个文件可以放time类的成员函数定义
time::time(int hour,int min,int sec)//构造函数定义
{
    m_iHour=hour;
    m_iMinute=min;
    m_iSecond=sec;
}

match.h 头文件

#ifndef MATCH_H_INCLUDED
#define MATCH_H_INCLUDED

#include<iostream>
using namespace std;

class time;//必须加这个声明

class match
{

public:
  void printTime(time &t);
};


#endif // MATCH_H_INCLUDED

match.cpp源文件

#include"match.h"
#include"time.h"
#include<iostream>
using namespace std;
//这个文件可以定义match类的成员函数定义
void match::printTime(time &t)
{
    cout<<t.m_iHour<<':'<<t.m_iMinute<<':'<<t.m_iSecond<<endl;
}

接下来就是主文件main.cpp

#include"stdlib.h"
#include"time.h"
#include"match.h"

int main(void)
{
    time t(20,56,34);//使用time类定义
    match m;//使用match类定义
    m.printTime(t);//用match类的printTime函数访问time类的私有成员
    system("pause");
    return 0;
}

这个示例可以很清楚看到文件的相互关系,可以看做友元成员函数的模板了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值