对运算符进行重载(C++)

在 C++ 中,可以通过运算符重载来实现自定义数据类型对运算符的支持。运算符重载的基本思路是,将运算符作为函数名,将操作数作为函数参数,在函数中实现自定义类型的具体运算操作,然后返回结果。使用运算符重载可以使得代码更加简洁且易读,使代码更加便于理解和维护。

运算符重载的语法格式为:

```cpp

返回值类型 operator 运算符符号(参数列表);


```

其中,返回值类型表示运算结果的类型,运算符符号表示要重载的运算符(比如 +、-、*、/ 等),参数列表则表示运算符所涉及到的操作数。

下面以自定义复数类为例,说明如何实现运算符重载。

首先是复数类的定义:

```cpp

class Complex
{
private:
    double real;
    double imag;
public:
    Complex(double r = 0.0, double i = 0.0) : real(r), imag(i) {}               
    Complex operator+(const Complex& c) const;                                  
    Complex operator-(const Complex& c) const;                                  
    Complex operator*(const Complex& c) const;                                  
    Complex operator/(const Complex& c) const;                                  
    friend ostream& operator<<(ostream& os, const Complex& c);                  
    friend istream& operator>>(istream& is, Complex& c);                        
};


```

在上述代码中,定义了一个名为Complex的类,其中包含两个私有成员变量real和imag,代表复数的实部和虚部。并定义了构造函数、四个运算符重载函数和两个友元函数。

下面对运算符重载函数进行详细的说明。

1. 加法运算符重载函数

```cpp

Complex Complex::operator+(const Complex& c) const
{
    double r = real + c.real;                                                   
    double i = imag + c.imag;                                                   
    return Complex(r, i);                                                       
}


```

在上述代码中,实现了复数加法的运算。将两个复数的实部和虚部分别相加,得到结果后生成新的复数对象并返回。

2. 减法运算符重载函数

```cpp

Complex Complex::operator-(const Complex& c) const
{
    double r = real - c.real;                                                  
    double i = imag - c.imag;                                                  
    return Complex(r, i);                                                      
}


```

在上述代码中,实现了复数减法的运算。将两个复数的实部和虚部分别相减,得到结果后生成新的复数对象并返回。

3. 乘法运算符重载函数

```cpp

Complex Complex::operator*(const Complex& c) const
{
    double r = real * c.real - imag * c.imag;                                   
    double i = real * c.imag + imag * c.real;                                   
    return Complex(r, i);                                                       
}


```

在上述代码中,实现了复数乘法的运算。根据复数乘法公式,得到结果后生成新的复数对象并返回。

4. 除法运算符重载函数

```cpp

Complex Complex::operator/(const Complex& c) const
{
    double d = c.real * c.real + c.imag * c.imag;                                
    double r = (real * c.real + imag * c.imag) / d;                              
    double i = (imag * c.real - real * c.imag) / d;                              
    return Complex(r, i);                                                       
}


```

在上述代码中,实现了复数除法的运算。根据复数除法公式,得到结果后生成新的复数对象并返回。

5. 输出运算符重载函数

```cpp

ostream& operator<<(ostream& os, const Complex& c)
{
    os << '(' << c.real << ',' << c.imag << ')' << endl;                        
    return os;                                                                   
}


```

在上述代码中,重载了输出运算符,可以使用cout将复数对象输出到屏幕上。

6. 输入运算符重载函数

```cpp
 

istream& operator>>(istream& is, Complex& c)
{
    is >> c.real >> c

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值