zoukankan      html  css  js  c++  java
  • 122.模板与友元

     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 }
  • 相关阅读:
    守卫者的挑战
    黑魔法师之门
    noip2015 普及组
    noip2015 提高组day1、day2
    40026118素数的个数
    高精度模板
    经典背包系列问题
    修篱笆
    [LintCode] Linked List Cycle
    [LintCode] Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8618565.html
Copyright © 2011-2022 走看看