如何创建友元函数

本文详细介绍了C++中友元函数的概念及其使用方法。通过具体示例展示了如何在类声明中声明友元函数,并在类外定义它。文章还讨论了友元函数与成员函数的区别,以及如何利用友元函数来实现类之间的某些操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

①将其原型放在类声明中,并在原型声明前加上关键字friend

虽然是在类中声明的,但是他却不是成员函数,不能通过成员运算符来调用;
虽然他不是成员函数,但是和成员函数的权限相同

②编写函数定义,因为他不是成员函数,所以函数定义不能加 (类名:: ) 限定符,在定义中也不需要用关键字friend

例子

friend TIME operator*(double b, const TIME & t);

#ifndef __TIME_H__
#define __TIME_H__

class TIME
{
	private:
		int nHours;
		int nMinutes;
	public:
		TIME();
		TIME(int H, int M);
		void SetTime(int H, int M);
		void ShowTime(void) const;
		TIME operator+(const TIME & t) const;
		TIME operator*( double b) const;
		friend TIME operator*(double b, const TIME & t);
};

#endif

再此过程中 发现了 非成员函数不能用const 修饰符来修饰
TIME operator(double b, const TIME & t) const 是错误的*

TIME operator*(double b, const TIME & t)
{
	TIME Result;
	long TotalMinutes = t.nHours * b * 60 + t.nMinutes * b;
	Result.nHours = TotalMinutes/60;
	Result.nMinutes = TotalMinutes%60;

	return Result;
}
#include "Time.h"

int main(int argc, char* argv[])
{
	TIME a(1,50);
	TIME b(2,10);

	TIME c = 10.3 * a   ;

	c.ShowTime();
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值