运算符重载

本文介绍如何在C++中通过成员函数和全局函数实现复数类的运算符重载,包括加法和减法运算,并展示了如何使用友元函数进行重载以提高灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.类的实现运算符函数–左调右参
L . operator# (R)

 Complex const operator+ ( Complex const &rhs) const
 {
     return Complex (m_r + rhs.m_r, m_i + rhs.m_i);
 }

2.全局中重载运算符函数–左一右二,返回匿名类型。
L ::operator# ( L , R )

Complex const operator- (Complex const &lhs, Complex const &rhs)
{
    return Complex (lhs.m_r - rhs.m_r, rhs.m_i - rhs.m_i);
}
Complex  c1(1,2), c2(3,4);
(c1 + c2).show(); // c1.operator+ (c2)
(c2 - c1).show(); // ::operator-(c2, c1);

也可以将外部运算符重载作为 友元 函数 在类中声明。

friend Complex& operator-= (Complex &lhs, Complex const &rhs)
{
     lhs.m_r -= rhs.m_r;
     lhs.m_i -= rhs.m_i;
     return lhs;
}
friend istream &operator>> (istream &lhs, Complex &rhs)
{
    return lhs >> rhs.m_r >> rhs.m_i;
}
friend ostream &operator<< (ostream &lhs, Complex const &rhs)
{
    return lhs << rhs.m_r << '+' << rhs.m_i << 'i';
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值