返回类型在C ++ OOP中的含义和含义

问题描述 投票:-3回答:1

所以我有一个下面给出的类的方法,该方法使用运算符重载将两个复数相乘:

Complex operator*(Complex &c2) {
    Complex temp;

    temp.realPart = realPart * c2.realPart - (imaginaryPart * c2.imaginaryPart);
    temp.imaginaryPart = (realPart * c2.imaginaryPart) + (imaginaryPart * c2.realPart);

    return temp;
}

这似乎很好。但是,将成员函数标头更改为:

时,我的程序无法运行
Complex& operator * (Complex &c2) {  // Adding & after the class name.

程序不会崩溃,但是在程序上的光标闪烁了一段时间后,它无法计算答案/结束。类名后面的&是什么意思?而且我已经看到它在返回this指针时被使用。

c++ overloading pass-by-reference
1个回答
1
投票

返回类型在C ++中的含义和含义

在任何类型之后,它与&的含义相同。这意味着该类型是引用。因此,如果它在返回类型之后,则表示该函数返回引用。

您的函数返回一个自动变量。返回对自动变量的引用是没有用的,因为自动对象在返回时被破坏,因此该引用立即变为无效。

如果您尝试通过返回的无效引用访问不存在的对象,则程序的行为将是不确定的。

© www.soinside.com 2019 - 2024. All rights reserved.