友员函数

友元函数分为友元全局函数和友元成员函数
先看友元全局函数:
定义一个Time类

#ifndef TIME_H
#define TIME_H
class Time
{
public:
    Time(int h, int m, int s)
{
    m_iHour = h;
    m_iMinute = m;
    m_iSecond = s;
}
private:
    int m_iHour;
    int m_iMinute;
    int m_iSecond;
};
#endif // !TIME_H

在main函数中,定义一个打印时间的函数printTime(),由于Time中的数据成员被限制为私有,因此全局函数是不能访问的。

#include "time.h"
#include <iostream>
using namespace std;
void printTime(Time &t);
int main()
{
    Time t(6, 34, 25);
    printTime(t);

    system("pause");
    return 0;
}
void printTime(Time &t)
{
    cout << t.m_iHour << ":" << t.m_iMinute << ":" << t.m_iSecond << endl;

}

此时编译会出错。
因此友元函数要出场了,为了能访问Time类中的私有数据成员,需要在Time类中声明一个友元全局函数,如下:

#ifndef TIME_H
#define TIME_H
class Time
{
    friend void printTime(Time &t);

public:
    Time(int h, int m, int s)
         {
    m_iHour = h;
    m_iMinute = m;
    m_iSecond = s;
        }
private:
    int m_iHour;
    int m_iMinute;
    int m_iSecond;
};
#endif // !TIME_H

如此,编译就能通过了!!
接下实现一个友元成员函数。友元成员函数要求有两个类才能实现,因此再定义一个Match类


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,545评论 1 51
  • 重新系统学习下C++;但是还是少了好多知识点;socket;unix;stl;boost等; C++ 教程 | 菜...
    kakukeme阅读 20,073评论 0 50
  • 第一天 一.内联函数(inline) 函数调用的时候需要建立栈内存环境,进行参数传递,并产生程序执行转移,这些工作...
    陈果123阅读 1,152评论 0 1
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 5,059评论 0 14
  • 复盘和天赋组组长-艺馨的约聊 Angie的价值变现研习社是一个神奇的地方,这里的人...
    ea4e3195285d阅读 721评论 0 4