例exam 12 -6 输入运算符的重载 #include <iostream. h> class Point { public: Point(int i=0, int j=0) { x=i; y=j; } //<<、>>必须友元重载 friend istream &operator>>(istream &in, Point &a); private: int x, y; }; istream &operator>>(istream &in, Point &a) { int main() cout<<"Enter the x and y : "; { in>>a. x; Point a(10, 10); in>>a. y; cin>>a; return in; return 0; } }
o o o o o #include <iostream. h> class Point { public: Point(int i=0, int j=0) { x=i; y=j; } friend istream &operator>>(istream &in, Point &a); friend ostream &operator<<(ostream &out, Point &a); private: int x, y; }; istream &operator>>(istream &in, Point &a) { cout<<"Enter the x and y : "; in>>a. x; in>>a. y; return in; }
o ostream &operator<<(ostream &out, Point &a) o { o out<<a. x<<", "<<a. y<<endl; o return out; o } o int main() o { o Point a(10, 10); o cout<<a; o cin>>a; o cout<<a; o return 0; o }
向量类模板定义 template<class T> class Vector { T *data; int size; public: Vector(int i) { data=new T[i]; } ~Vector() { delete[] data; } T &operator[](int i) { return data[i]; } };
3) 从普通类派生出类模板 [例]: class Base { …… }; template <class T> class Derived: public Base { T data; …… }