运算符重载函数

代码:

#include<iostream>
using namespace std;
class complex {
public:
    double real;
    double imag;
    complex(double r = 0, double i = 0)
    {
        real = r; imag = i;
    }
};
complex operator*(complex co1, complex co2)
{
    complex temp;
    temp.real = co1.real * co2.real- co1.imag*co2.imag;
    temp.imag = co1.real * co2.imag+ co2.real* co1.imag;
    return temp;
}
int main()
{
    complex com1(2.3, 3.6), com2(2.8, 6.9), total1, total2;
    total1 = operator*(com1, com2);
    cout << "real1=" << total1.real << "" << "imag1 = " << total1.imag << endl;
    total2 = com1* com2;
    cout << "real2=" << total2.real << "" << "imag2 = " << total2.imag << endl;
    return 0;
}

心得体会:

重载

在同一个作用域内的某个函数和运算符指定多个定义,分别称为函数重载运算符重载
重载指多个函数或方法具有相同的名称、不同的参数列表和定义。

关于运算符函数

运算符函数可以是类成员函数,也可以是友元函数
定义运算符函数时,如果要使其第一个操作数不是类对象,则必须使用友元函数。

不能重载的运算符

  1. sizeof 长度运算符
  2. . 成员访问运算符
  3. .* 成员指针访问运算符
  4. :: 域运算符
  5. ?:条件运算符                                                                                                                                                                                                                                                                                                                                                                                                                                    如果将运算符重载函数作为成员函数,它可以通过this指针自由地访问本类的数据成员,因此可以少写一个函数的参数。但必须要求运算表达式的第一个参数是一个类对象,而且与运算符函数类型相同。如果运算符左侧的操本作数不是本类对象,则运算符重载函数不能作为成员函数,只能作为非成员函数;如果函数需要访问类的私有成员,则必须声明为该类的友元函数。将双目运算符重载为友元函数是,在函数的形参列表必须有两个参数,不能省略,形参的顺序任意,不要求第一个参数必须为类对象。但在使用运算符的表达式中,要求运算符左侧的操作数与函数的第一个参数对应,运算符右侧的操作数与函数的第二个参数对应。数学上的交换律在此不适用。解决方法是再重载一次,交换参数顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值