模板是個好東西
阿新 • • 發佈:2019-01-05
Description
定義Point類:
有兩個int型別的資料成員,表示其橫縱座標。
無參建構函式,初始化兩個座標為0。
帶參建構函式。
過載其輸出運算子<<,用於輸出一個點的橫座標和縱座標,中間用一個空格隔開。
定義一個類模板Data:
只有一個數據成員data,data的型別是由型別引數指定的。
定義該類模板的建構函式。
定義void show()方法,用於顯示data的值。
Input
輸入有5行。
第1行是一個不含空白符的字串。
第2~4行分別是一個整數,其中第2、3行是點的座標值。
最後一行是一個字元。
Output
見樣例。
Sample Input
test
1
2
3
c
Sample Output
c
3
test
1 2
HINT
Append Code
append.cc,
int main()
{
string n;
int x, y, d;
char c;
cin>>n;
cin>>x>>y>>d;
cin>>c;
Point p(x, y);
Data<char> aChar(c);
Data<int> anInt(d);
Data<Point> aPoint(p);
Data<string > aString(n);
aChar.show();
anInt.show();
aString.show();
aPoint.show();
return 0;
}
AC程式碼
#include <iostream>
#include <vector>
using namespace std;
class Point
{
protected:
int _x,_y;
public:
Point(int x=0,int y=0):_x(x),_y(y){}
friend ostream& operator <<(ostream& os,const Point& p)
{
os<<p._x<<" "<<p._y<<endl;//這裡又一次忘記了p.你可要記住呀;
return os;
}
};
template<typename T>//這裡沒有分號
class Data
{
public:
T data;
public:
Data(T d):data(d){}
void show(){cout<<data<<endl;}//這裡輸出的data,而不是d,分清楚呀;
};
int main()
{
string n;
int x, y, d;
char c;
cin>>n;
cin>>x>>y>>d;
cin>>c;
Point p(x, y);
Data<char> aChar(c);
Data<int> anInt(d);
Data<Point> aPoint(p);
Data<string> aString(n);
aChar.show();
anInt.show();
aString.show();
aPoint.show();
return 0;
}