-2

这是代码:正如您在代码中看到的,构造函数被用作返回类型,但我已经读过它什么也不返回,甚至不是 void。请解释。

#include<iostream>
using namespace std;
class complex_1
{
    float x,y;
public:
    complex_1() {}
    complex_1(float a) {x=y=a;}
    complex_1(float real, float imag )
    {x=real;y=imag;}
    complex_1 operator+(complex_1);
    void display(void);
};
complex_1 complex_1::operator+(complex_1 c)
{
    c.x= x + c.x;
    c.y= y + c.y;
    return c;
}
void complex_1::display(void)
{
    cout<<x<<" + "<<y<<"j"<<endl;
}
int main()
{
    complex_1 A(2.7, 3.5);
    complex_1 B(1.2);
    complex_1 C;
    //C=A.operator+(B);   // equivalent to C = A + B;
    C=A+B;
    cout<<"A =  ";
    A.display();
    cout<<"B =  "; 
    B.display();
    cout<<"C =  ";
    C.display();

    return 0;
}
4

4 回答 4

1

这个:

complex_1 complex_1::operator+(complex_1 c)

是返回类型对象的类complex_1成员函数(complex_1::意味着 this)的定义complex_1

c不是构造函数,而是complex_1在此函数中返回的类型的对象。

于 2013-08-31T16:52:45.687 回答
0

构造函数就地构造,它不需要返回任何东西。

构造函数不像普通函数那样被调用

以下不返回任何内容

complex_1 A(2.7, 3.5);
complex_1 B(1.2);
complex_1 C;
于 2013-08-31T16:56:08.047 回答
0

operator+函数根本不使用构造函数。它正在修改c传入的参数(这是原始参数的副本),然后返回它。编译器将在调用函数之前使用复制构造函数。

于 2013-08-31T17:23:40.963 回答
0

这是您以联合方式编写的运算符+返回。省略构造函数你会发现构造函数与它无关。

于 2013-08-31T17:17:55.800 回答