c++友元函数和友元类详解

您所在的位置:网站首页 友元函数的作用是什么意思 c++友元函数和友元类详解

c++友元函数和友元类详解

2024-07-14 01:04| 来源: 网络整理| 查看: 265

我们在设计类时,一般将数据成员设计成私有的,体现面向对象的信息隐藏和封装性;这些私有的数据成员只能由类成员函数所访问,类外函数不能访问;当在某些情况下,我们可能又需要访问类对象的私有成员,那我们应该怎么办呢?

为了能够访问类私有成员,我们可以采用友元函数,在c++中以关键字friend加以声明,友元可以包括友元函数和友元类;友元函数又可以分为友元函数和友元成员函数;其一般形式分别如下:

友元函数: friend 函数返回类型 函数名(形参列表) 形如:friend void Display(const CMyTime& time)

友元成员函数: friend 函数返回类型 类型名::函数名(形参列表) 形如:friend void CMyDate::Display(const CMyTime& time)

友元类: friend 类型名 形如friend CMyDate

友元函数

友元函数就是将类外的函数,并在本类中加以friend关键字声明,那么这个函数就是本类的友元函数;

下面就将普通函数声明为友元函数;

class CMyTime { public: CMyTime(int hour,int minute, int second); //全局函数Display是本类的友元函数,可以访问其私有数据成员 friend void Display(const CMyTime& time); private: int m_Hour; int m_Minute; int m_Second; }; CMyTime::CMyTime(int hour,int minute, int second) { this->m_Hour = hour; this->m_Minute = minute; this->m_Second = second; }

在这个例子中,Display函数是一个全局的普通函数,不属于任何类,没有this指针;我们将其设置为友元函数后就能访问CMyTime类的私有成员了,否则Display函数将会报错;

需要注意的是,为了能够引出类的成员函数,这个友元函数的形参一般是类对象的引用或者指针; 友元函数如下:

void Display(const CMyTime& time) { //因为Display函数没有this指针,引用这些私有成员数据,需要指定对象 cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3