C++运算符重载之复数加法

​C++允许运算符重载,这意味着程序员可以重新定义常用运算符(如+、-、*、/等)的行为,以便它们能够以新的方式在类或结构中使用。运算符重载是一种强大的工具,但如果不正确使用,也可能会引入混淆和错误。

以下是一些关于C++运算符重载的基本指导原则:

明确性:运算符重载应当使代码更清晰、更易于理解。如果一个运算符的重载导致代码变得难以理解,那么这个重载可能就不是一个好主意。

一致性:重载的运算符应当遵循C++中该运算符的常规行为。例如,如果你重载了+运算符,那么你的实现应该类似于内置类型的+行为。

不要改变运算符的优先级或结合性:重载运算符时,不应改变其优先级或结合性。

重载非成员函数:通常,运算符重载是作为非成员函数实现的,这样可以保持类的封装性。

返回类型:返回类型通常是基于操作数的类型。例如,对于二元+操作符,返回类型通常是两个操作数类型之一。

不要修改操作数:运算符重载应当不会修改其操作数。如果需要改变操作数的值,应当通过其他方式来实现,例如使用成员函数。

支持默认参数:有时你可能希望某些参数有默认值,这样你可以用更少的参数调用重载的运算符。

支持常量:考虑是否应该支持常量对象作为操作数。

支持引用:考虑是否应该支持引用作为操作数。这通常用于效率考虑。

考虑异常安全性:在实现重载的运算符时,要确保代码是异常安全的。

谨慎使用非常规运算符:避免重载如!!、<>、.*等非常规的、不易理解的运算符。如果必须重载这些运算符,务必提供足够的文档说明其用途和行为。

避免与标准库冲突:尽量不要与C++标准库中的类或函数使用相同的运算符重载。

#include 
​
class Complex {
public:
    //接受两个参数:real和imag,分别表示复数的实部和虚部。
    //在构造函数中,使用初始化列表的方式将这两个参数的值分别赋给成员变量real_和imag_
    Complex(double real, double imag) : real_(real), imag_(imag) {}
​
    // 重载加法运算符
    Complex operator+(const Complex& other) const {
        return Complex(real_ + other.real_, imag_ + other.imag_);
    }
​
    void print() const {
        std::cout << real_ << " + " << imag_ << "i" << std::endl;
    }
​
private:
    double real_;
    double imag_;
};
​
int main() {
    Complex c1(1.0, 2.0);
    Complex c2(3.0, 4.0);
    Complex c3 = c1 + c2; // 使用重载的加法运算符
    c3.print(); // 输出:4 + 6i
    system("pause");
    return 0;
}
​

你可能感兴趣的:(c++,开发语言)