友元函数

对友元函数和友元类进行了一些整理:

一、关于友元函数的定义:

友元函数可以是不属于任何类的非成员函数,也可以是另一个类的成员函数。

二、友元函数的特点:

友元函数不是当前类的成员函数,但它可以访问该类的所有成员,包括私有成员、保护成员和公有成员。

友元函数可以定义在类内,也可以定义在类外。

三、友元函数的分类

1、将非成员函数声明为友元函数

#include <iostream>
using namespace std;
class Date{
public:
Date (int y,int m,int d);
friend void showDate(Date&);  //声明函数showDate为友元函数

}
...
Void showDate (Date& d)
{
...
}
...

这时友元函数的访问原则是:友元函数不是类的成员函数,所以不能直接访问对象的数据成员,必须通过对象名来访问该对象的数据成员。

引友元提高了程序的运行效率,实现了类之间的数据共享,方便编程。

2、将成员函数声明为友元函数

一个类的成员函数也可以作为另一个类的友元,成为友元成员函数。友元成员函数不仅可以访问自己所在类对象中的私有和公有成员,还可以访问访问friend声明语句所在类对象中的成员。

#include<iostream>
using namespace std;
class Time {
public:
...
void showDate_Time(Date&);
...

}
class Date{
public:
Date(int y,int m, int d)
...
friend void Time :: showDate_Time (Date&);
}

void Time::showDate_Time (Date& d)
{

}
//友元函数,函数showDate_Time 可以访问Date类对象中的私有成员数据
//成员函数,函数showDate_Time 可以访问Time类对象中的私有数据

四、友元类

定义:将一个类定义为也可以定义为友元类

如:在X类中加入friend Y类,则这时的Y类就是X类的友元类

这意味着Y类中的所有函数都可以访问X类中的所有成员(包括私有成员)

注意:(1)友元关系是单向的,不具有交换性。如声明了类X是类Y的友元,不等于类Y一定是X的友元。

(2)友元不具有传递性,若类X是类Y的友元,类Y是类Z的友元,不一定类X是类Z的友元。必须在类Z中声明。

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值