运算符重载

本文详细介绍了C++中运算符重载的基本概念、两种形式及其应用实质,并提供了设计指导原则,帮助读者理解何时使用成员函数或友元函数进行重载。

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

1)重载运算符的基本知识


//其实就是编译器给出的一种特殊调用函数的方法


//重载运算符是具有特殊名称的函数。(操作符函数)


//二元运算符是一个具有两个参数的函数,一元运算符是一个具有一个参数的函数


//::  .*  .  ?:  sizeof四种操作符不能重载


//符号无论改为什么用途,优先级、结合性、操作数数目不变


//不再具备短路求值特性


//重载操作符必须具有一个类类型(或枚举)操作数


2)运算符重载的两种形式:
1.类成员运算符重载
(看起来操作数少了1,但作为成员函数的操作符,隐藏了一个this形参,限定为第一操作数)
(左操作数只能是该类的对象)
2.友元运算符重载


3)更好地了解运算符重载的实质
//可以像调用普通函数一样调用重载运算符函数
/*比如,
 *友元运算符重载:
 *item1 + item2相当于operator+(item1, item2)
 *类成员运算符重载:
 *item1 += item2相当于item1.operator+=(item2)*/


4)重载运算符的设计
如何选择成员还是友元实现:
1.必须定义为成员的操作符:
赋值(=)、下标([])、调用(())、成员访问箭头(->)——定义为友元操作符会编译错误
2.一般为成员的操作符:
复合赋值操作符
自增自减和解引用(*)
3.一般为普通非成员友元的操作符
对称的操作符:算术(+-*/) 、相等操作符、关系操作符、位操作符
4.必须为非成员函数(友元)的操作符
输入输出<< >>操作符


5)
虽然是函数,但不能有默认参数(有的话调用时很奇怪!!)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值