1. 程式人生 > >C++ 略坑的運算子過載練習

C++ 略坑的運算子過載練習

補充程式碼,使程式按要求輸出 
 

#include <iostream>
using namespace std;
template <class T>
class Add{
public:
// 在此處補充你的程式碼
};

int main(){
	double f;
	int n;
	while( cin >> f >> n) {
		
		Add<double> a1(f);
		Add<int> a2(n);
		double x,y;
		int p,q;
		cin >> x >> y >> p >> q;
		cout << a1(x, y) << endl;
		cout << a2(p, q) << endl;
	}
	return 0;
}

輸入

有若干組資料
每組資料三行
第一行是一個浮點數f和一個整數 n
第二行是兩個浮點數 x 和 y
第三行是兩個整數 p 和q

輸出

對每組資料
先輸出 x + y - f
再輸出 p + q - n

樣例輸入

2.2 3
1.0 2.0
10 20
4.5 30
4.8 9.2
100 200

樣例輸出

0.8
27
9.5
270

 

這裡如果將a1(x,y)理解為建構函式,然後過載前面的輸出運算子是不合適的,應該理解為()為過載運算子。

由於輸出都是浮點型,還需要注意建構函式不必用模板,只需用float即可

#include <iostream>
using namespace std;
template <class T>
class Add {
public:
	// 在此處補充你的程式碼

public:
	Add(float a):val(a){}
	float operator()(T x, T y)
	{
		return float(x + y) - val;
	}
private:
	float val;
};

int main() {
	double f;
	int n;
	while (cin >> f >> n) {

		Add<double> a1(f);
		Add<int> a2(n);
		double x, y;
		int p, q;
		cin >> x >> y >> p >> q;
		cout << a1(x, y) << endl;
		cout << a2(p, q) << endl;
	}
	return 0;
}