声明模板友元函数

声明模板友元函数
#include  < iostream >
#include 
< vector >
#include 
< stdlib.h >
using   namespace  std;

template
< typename T >   class  person;

template
< typename T >
ostream
&   operator << (ostream  &  ostr, person < T >&  p);

template
< typename T >
class  person
{
public:
    person(T _data):data(_data)
{cout<<"person constructor"<<endl;}
    person(person
<T>& rhs){cout<<"person copy constructor"<<endl;}
    person
<T>& operator=(person<T>& rhs){ cout<<"person operator ="<<endl; return *this;}
    
~person(){cout<<"person destructor"<<endl;}
    
    friend ostream
& operator<< <T>(ostream& ostr, person<T>& p);
    
private:
    T data;
}
;

template
< typename T >
ostream
&   operator << (ostream &  ostr, person < T >&  p) {
    ostr 
<< p.data << endl;
    
return ostr;
}


int  main()
{
    person
<int> man(1);
    cout
<<man<<endl;
    system(
"PAUSE");
    
return 0;
}

你可能感兴趣的:(声明模板友元函数)