C++ 略坑的運算子過載練習
阿新 • • 發佈:2018-11-16
補充程式碼,使程式按要求輸出
#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; }