#include <iostream>
using namespace std;
class Test
{
public:
Test(int = 0);
//復制建構式
Test(const Test&);
const Test& operator+(const Test&);
Test& operator=(const Test&);
int operator()();
private:
int Number;
};
//建構式
Test::Test(int Number_Parameter) :Number(Number_Parameter){}
//復制建構式
Test::Test(const Test& test)
{
Number = test.Number;
}
/*四則運算類的函式實作*/
const Test& Test::operator+(const Test& test)
{
int Number_Parameter = 0;
Number_Parameter = Number + test.Number;
return Test(Number_Parameter);
}
/*賦值類的函式實作*/
Test& Test::operator=(const Test& test)
{
Number = test.Number;
return *this;
}
/*括號類的函式實作*/
int Test::operator()() { return Number; }
int main()
{
Test test_1(1), test_2(2), test(0);
test = test_1 + test_2;
cout << test() << "\n";
}
在多載"+"運算子函式中,我使用了"const Test&"作為回傳型別(第一次遇到這個作為回傳型別,在此之前沒有碰到過),
但是輸出的結果與預期不符,但是如果我使用正常的"Test"作為回傳型別,就可以輸出預期結果"3"。
以下是測驗的結果,每次輸出是奇怪的數字,而預期是"3",這是為什么?



我通過設定斷點,目前排除了多載+運算子函式的錯誤,然后問題在多載"="運算函式里,中間運行的時候,其中儲存的數字"跳躍"了:



我尋思著是不是多載"+"回傳的那個臨時物件沒了導致的錯誤,
如果我有哪里沒有講清的,請在評論區里指出,希望大佬能指點,十分謝謝!!!
uj5u.com熱心網友回復:
我想你自己已經回答你的問題了:多載"+"回傳的那個臨時物件沒了導致的錯誤轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/280751.html
標籤:C++ 語言
上一篇:二叉樹
下一篇:求,哪個人可以幫幫我
