运算符重载允许自定义类型使用标准运算符,提升代码可读性;在C++中,可通过成员或友元函数重载算术运算符,如Complex类重载+、-、*、/等,实现复数运算,返回新对象且不修改原对象,复合赋值运算符如+=则修改自身并返回引用。

在面向对象编程中,运算符重载允许我们为自定义类型(如类或结构体)赋予标准运算符(如 +、-、*、/)新的行为。这样可以让对象像基本数据类型一样进行运算,使代码更直观、易读。
算术运算符重载的基本规则
以 C++ 为例,实现算术运算符重载有以下常见方式:
可以将运算符重载为类的成员函数或全局函数(友元函数)重载函数需明确参数数量(如二元运算符需两个操作数)通常返回一个新的对象,不修改原对象(除非是复合赋值运算符,如 +=)
示例:复数类的加法和减法重载
下面定义一个简单的 Complex 类,表示复数,并重载 + 和 – 运算符:
#include using namespace std;class Complex {private:double real;double imag;public:// 构造函数Complex(double r = 0, double i = 0) : real(r), imag(i) {}
// 重载加法运算符(成员函数形式)Complex operator+(const Complex& other) const { return Complex(real + other.real, imag + other.imag);}// 重载减法运算符(成员函数形式)Complex operator-(const Complex& other) const { return Complex(real - other.real, imag - other.imag);}// 输出复数void display() const { cout << real << " + " << imag << "i" << endl;}
};
int main() {Complex c1(3, 4);Complex c2(1, 2);Complex c3 = c1 + c2; // 使用重载的 +Complex c4 = c1 - c2; // 使用重载的 -
cout << "c1 + c2 = "; c3.display();cout << "c1 - c2 = "; c4.display();return 0;
}
输出结果:
c1 + c2 = 4 + 6i
c1 - c2 = 2 + 2i
其他算术运算符的扩展
类似地,你可以重载 *、/ 等运算符。例如重载乘法(复数乘法):
Complex operator*(const Complex& other) const { // (a + bi) * (c + di) = (ac - bd) + (ad + bc)i return Complex( real * other.real - imag * other.imag, real * other.imag + imag * other.real );}
也可以重载复合赋值运算符,如 +=:
Complex& operator+=(const Complex& other) { real += other.real; imag += other.imag; return *this;}
基本上就这些。通过运算符重载,我们可以让自定义类型参与直观的数学运算,提升代码可读性和可用性。
以上就是运算符重载如何实现 算术运算符重载示例的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1472578.html
微信扫一扫
支付宝扫一扫