C++运算符重载,友元详解

本文详细介绍了C++中的运算符重载和友元机制。运算符重载允许用户自定义类型使用标准运算符,如复数类的加法。运算符重载有其限制,如不能重载成员运算符等。友元函数和友元类则是为了解决非成员函数访问类的私有成员,以提高效率。文章讨论了何时选择成员函数或友元函数进行运算符重载,并提供了<<运算符重载的例子。友元机制虽然提高了效率,但会破坏类的封装性,使用时需谨慎。
摘要由CSDN通过智能技术生成

运算符重载

运算符重载的作用
为什么会用运算符重载机制?
用复数类举例
Complex c3 = c1 + c2;
原因 Complex是用户自定义类型,编译器根本不知道如何进行加减,于是编译器给提供了一种机制,让用户自己去完成,自定义类型的加减操作,这个机制就是运算符重载机制

运算符重载的限制:
不能进行重载的运算符:成员运算符,作用域运算符,条件运算符,sizeof运算符,typeid(一个RTTI运算符),const_cast、dynamic_cast、reinterpret_cast、static_cast强制类型转换运算符
在这里插入图片描述
在这里插入图片描述

1.MyTime.h头文件

#pragma once
#ifndef MYTIME_H_
#define MYTIME_H_
class CMyTime
{
   
private:
int m_hours;
int m_minutes;
public:
CMyTime();
CMyTime(int h, int m = 0);
void AddHr(int h);  //小时更改
void AddMin(int m);//分钟更改
void Reset(int h = 0, int m = 0);  //重新设置时间
CMyTime operator+(const CMyTime &t) const;  //重载加法
CMyTime operator-(const CMyTime &t) const;  //重载减法
CMyTime operator*(double n) const;                //重载乘法
void Show() const;
~CMyTime();
};
#endif

2.MyTIme.cpp文件:

#include "stdafx.h"
#include "MyTime.h"
#include <iostream>
 
CMyTime::CMyTime()
{
   
m_hours = 0;
m_minutes = 0;
}
 
 
CMyTime::CMyTime(int h, int m)
{
   
m_hours = h;
m_minutes = m;
}
 
 
CMyTime::~CMyTime()
{
   
}
 
 
void CMyTime::AddHr(int h)                                        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值