1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string>
using namespace std;
template<class T>class Person; template<class T>void Show(Person<T> &p); template<class T>ostream & operator<< (ostream & os, Person<T> &p);
template<class T> class Person { public: Person(); Person(T name); friend ostream & operator<< <> (ostream & os, Person<T> &p); Person<T> operator=(Person<T> & tp);
friend void Show<>(Person<T> &p); private: T mName; };
template<class T> void Show(Person<T> &p) { cout << p.mName << endl; }
template<class T> Person<T> Person<T>::operator=(Person<T> & tp) { this->mName = tp.mName; return *this; } template<class T> ostream & operator<< (ostream & os, Person<T> &p) { os << p.mName; return os; }
template<class T> Person<T>::Person(){ }
template<class T> Person<T>::Person(T name) { mName = name; }
void test01() { Person<string> p("小明"); Person<string> p2("123"); //p2 = p; //cout << p2 << endl; //cout << p << endl;
Show(p); Show(p2); }
int main(char *argv[], int argc) { test01();
return 0; }
|