C++开发基础——运算符重载

一,运算符重载简介

一个运算符本质上是一个函数,因此,运算符重载其实就是函数的重载。

运算符重载的目的就是为系统已有的运算符添加特殊的功能。

运算符重载在C++的特性中并不算很特别,这次把它单独拿出来作为一个章节是想借助运算符重载的一些样例来回顾一下C++的一些语法特性,代码量比较多,但是都很经典。

这次被重载的函数,全都是运算符函数,运算符函数的定义和普通函数的定义类似,主要区别在函数名称上,函数名称包含operator关键字和运算符

运算符重载代码示例:

Box类的声明:

class Box
{
private:
    double length {1.0};
    double width {1.0};
    double height {1.0};
    double volume {1.0};
public:
    //重载"<"运算符
    bool operator<(const Box& aBox) const;
}

"operator<"重载的具体实现:

bool Box::operator<(const Box& aBox) const
{
    return this->volume() < aBox.volume();
}

"operator<"重载的两种使用方式:

Box box1, box2;

//不带operator关键字
if (box1 < box2)
    std::cout << "box1 is less than box2" << std::endl;

//带operator关键字
if(box1.operator<(box2))
    std::cout << "box1 is less than box2" << std::endl;

运算符重载分两种情况:成员函数的运算符重载 &  非成员函数的运算符重载

成员函数的运算符重载:

函数为类的方法。

运算符表达式的左侧必须为该类的对象。

成员函数形式的二元运算符重载:

return_type operator X(data_type val);

非成员函数的运算符重载:

函数独立于类,是全局函数,通常为类的友元函数。

运算符表达式的左侧可以是不同类的对象。

非成员函数形式的二元运算符重载:

return_type operator X(data_type1 val_1, data_type2 val_2);

运算符重载包含以下限制: 

1.不能添加新的运算符,只能重载语法中已定义过的运算符。

2.对象成员访问运算符("."),作用域解析运算符("::"),条件运算符("?:"),sizeof运算符等运算符不能被重载。

3.除了函数调用运算符、new和delete运算符以外,其他运算符的参数或操作数的数量在重载时不能被改变。举个例子,一元运算符,比如"++",重载时只能用于一个操作数。

4. 运算符重载不能更

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员与背包客_CoderZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值