1. 程式人生 > >122.模板與友元

122.模板與友元

private post 全局對象 span iostream template cin std 友元類

 1 #include <iostream>
 2 using namespace std;
 3 
 4 //模板類的聲明,可以引用友元類,也可以創建引用或者指針,不能創建全局對象
 5 template<class T>class showit;
 6 
 7 //錯誤
 8 //showit<int> myint;
 9 
10 //模板類
11 template <class T>
12 class myclass
13 {
14 public:
15     myclass(T m,T n):a(m),b(n)
16     {
17 
18     }
19 ~myclass() 20 { 21 22 } 23 24 private: 25 T a; 26 T b; 27 28 //模板函數聲明也必須要帶模板聲明 29 template<class T> 30 friend void show(myclass<T> &my); 31 32 //聲明友元類 33 friend class showit<T>; 34 }; 35 36 template<class T> 37 void show(myclass<T> &my)
38 { 39 cout << my.a << my.b << endl; 40 } 41 42 //友元類,包裝一下模板類 43 template<class T> 44 class showit 45 { 46 public: 47 myclass<T> *p; 48 void set(T a, T b) 49 { 50 p = new myclass<T>(a, b); 51 cout << p->a << p->b << endl;
52 } 53 }; 54 55 void main() 56 { 57 /*myclass<int> my1(29, 39); 58 show(my1);*/ 59 60 showit<int> showit1; 61 showit1.set(12, 34); 62 cin.get(); 63 }

122.模板與友元