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

来源:互联网 发布:网络兼职怎么找 编辑:程序博客网 时间:2024/06/04 18:03

上篇笔记中对于友元成员函数简单介绍一下结构,本篇主要通过另一实例,让类的封装性更好,编程走起来。程序中定义了两个类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;}

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