鱼C论坛

 找回密码
 立即注册
查看: 1326|回复: 3

[已解决]小甲鱼课程第25课,运算符重载

[复制链接]
发表于 2019-3-20 11:26:27 | 显示全部楼层 |阅读模式
10鱼币
#include <iostream>

class Complex
{
public:
    Complex();
    Complex(double r, double i);
    Complex complex_add(Complex &d);
    void print();

private:
    double real;
    double imag;
};

Complex::Complex()
{
    real = 0;
    imag = 0;
}

Complex::Complex(double r, double i)
{
    real = r;
    imag = i;
}

Complex Complex::complex_add(Complex &d)
{
    Complex c;
    c.real = real + d.real;
    c.imag = imag + d.imag;
    return c;
}

void Complex::print()
{
    std::cout << "(" << real << ", " << imag << "i)\n";
}

int main()
{
    Complex c1(3, 4), c2(5, -10), c3;
    c3 = c1.complex_add(c2);
    std::cout << "c1 = ";
    c1.print();
    std::cout << "c2 = ";
    c2.print();
    std::cout << "c1 + c2 = ";
    c3.print();
    return 0;
}

question:
在执行加法操作的时候,
Complex Complex::complex_add(Complex &d)
{
    Complex c;
    c.real = real + d.real;
    c.imag = imag + d.imag;
    return c;
}

为什么在类内实例了一个c ?


最佳答案
2019-3-20 11:26:28
因为重载的运算符 加 需要两个操作数,除了本身以外,还需要一个操作对象才行,而这里的对象就是本类的成员

最佳答案

查看完整内容

因为重载的运算符 加 需要两个操作数,除了本身以外,还需要一个操作对象才行,而这里的对象就是本类的成员
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-20 11:26:28 | 显示全部楼层    本楼为最佳答案   
因为重载的运算符 加 需要两个操作数,除了本身以外,还需要一个操作对象才行,而这里的对象就是本类的成员
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-2 21:46:43 | 显示全部楼层
Complex complex_add(Complex &d);
为什么 complex_add(Complex &d) 的前面要叫类名  Complex?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-2 21:50:55 | 显示全部楼层
asking-2015 发表于 2019-5-2 21:46
Complex complex_add(Complex &d);
为什么 complex_add(Complex &d) 的前面要叫类名  Complex?

我好像知道原因了,是不是因为Complex 是他的返回类型,即返回一个class Complex 类型的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-30 23:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表