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;
}