模板类里的friend方法

/*1.模板类里的friend函数的说明和定义2.所有一元运算符建议成员= ( ) [ ] –> –>* 必须是成员+= –= /= *= ^=建议成员&= |= %= >>= <<= 建议成员所有其他的二元运算符 建议非成员(非成员应该类内定义,见代码。)*/#include <iostream>#include <stdlib.h>using namespace std;template<class T>class xiaok{public:xiaok():i(1){}//第1种// friend void operator== /*vc6.0这里报错*/<T>(xiaok<T>& x,xiaok<T>& x1){cout<<x.i<<x1.i<<endl;} int i;};template<class T>class xiaok1{public:xiaok1():i(1){}//第2种// friend void operator== /*vc6.0这里报错*/<T>(xiaok1& x,xiaok1& x1){cout<<x.i<<x1.i<<endl;} int i;};template<class T>class xiaok2{public:xiaok2():i(1){}//vc6.0 第3种 ok friend void operator== (xiaok2<T>& x,xiaok2<T>& x1){cout<<x.i<<x1.i<<endl;} friend void operator< (xiaok2<T>& x,xiaok2<T>& x1){cout<<"here is xiaok2"<<endl;}//这里必须在类内定义,类外定义的话a3<b3会报错 //friend void operator< (xiaok2<T>& x,xiaok2<T>& x1); int i;};//template<class T> void operator< (xiaok2<T>& x,xiaok2<T>& x1){cout<<"here is xiaok2"<<endl;}template<class T>class xiaok3{public:xiaok3():i(1){}//vc6.0 第4种 ok friend void operator== (xiaok3& x,xiaok3& x1){cout<<x.i<<x1.i<<endl;} friend void operator<(xiaok3<T>& x,xiaok3<T>& x1){cout<<"here is xiaok3"<<endl;} int i; friend void temp(T *k);};template<class T> void temp(T *k){;}class you{friend void temp1();//友元类函数类外定义};void temp1(){}int main(int argc, char const *argv[]){xiaok<int> a;xiaok<int> b;//a==b;xiaok1<int>a1;xiaok1<int> b1;//a1==b1;xiaok2<int> a2;xiaok2<int> b2;a2==b2;a2<b2;xiaok3<int> a3;xiaok3<int> b3;a3==b3;a3<b3;return 0;}

,一个今天胜过两个明天

模板类里的friend方法

相关文章:

你感兴趣的文章:

标签云: