1. 程式人生 > >C++ 看上去有點奇怪的運算子過載

C++ 看上去有點奇怪的運算子過載

總時間限制: 

1000ms

 

記憶體限制: 

65536kB

// 在此處補充你的程式碼

描述

下面的MyInt類只有一個成員變數。MyInt類內部的部分程式碼被隱藏了。假設下面的程式能編譯通過,且輸出結果是:

4,1

請寫出被隱藏的部分。(您寫的內容必須是能全部放進 MyInt類內部的,MyInt的成員函式裡不允許使用靜態變數)。

#include <iostream>
using namespace std;
class MyInt  {
    int nVal;
    public:
        MyInt(int n) { nVal = n; }
        int ReturnVal() { return nVal; }
};
int main ()  {
    MyInt objInt(10);
    objInt-2-1-3;
    cout << objInt.ReturnVal();
    cout <<",";
    objInt-2-1;
    cout << objInt.ReturnVal();
    return 0;
}

輸入

輸出

4,1

樣例輸入

樣例輸出

4,1

 

注意,運算子過載是左結合

#include <iostream>
using namespace std;
class MyInt {
	int nVal;
public:
	MyInt(int n) { nVal = n; }
	int ReturnVal() { return nVal; }
	// 在此處補充你的程式碼

	MyInt &  operator -(int n)
	{
		nVal -= n;
		return *this;
	}
};
int main() {
	MyInt objInt(10);
	objInt - 2 - 1 - 3;
	cout << objInt.ReturnVal();
	cout << ",";
	objInt - 2 - 1;
	cout << objInt.ReturnVal();
	return 0;
}