C ++構文の小さなノート---スマートポインタ

スマートポインタ
  • メモリリークの問題を軽減するために、

  • ポインタは、ネイティブの代わりに使用しました

  • 陸軍規制:ヒープオブジェクトまたは変数空間にのみ指すことができます

  • 方法

    • にデストラクタスマートポインタを削除する呼び出し

    • 過負荷「 - >」演算子オーバーロードの一員として機能し、パラメータを持つことができません

    • スマートポインタ演算を禁止

    • スペースの1対だけのスマートポインタに向けることができます

 

1の#include <iostreamの>
 2の#include < ストリング >
 3  
4  使用して 名前空間STD。
5つの 
6  クラスPersion
 7  {
 8      文字列名;
9      int型の年齢;
10  公衆11      Persion(文字列名、int型の年齢)
 12      {
 13           - >名= 名。
14           - >年齢= 年齢;
15          COUT << " Persion()"<< てendl;
16      }
 17      
18      空隙ショー()
 19      {
 20          COUT << " NAME = " <<名<< ENDL。
21          裁判所未満<< " 年齢= " <<年齢<< てendl;
22      }
 23      
24Persion()
 25      {
 26          COUT << " 〜Persion()" << ENDL。
27      }
 28  }。
29  
30テンプレート<型名T>
 クラスポインタ
 32  {
 33      のT *のm_ptr。
34  公衆35      ポインタ(Tの*のPTR)
 36      {
 37          m_ptr = PTR。
38      }
 39      
40      ポインタ(CONSTポインタ&その他)
 41      {
 42          m_ptr = other.m_ptr。
43          はconst_cast <ポインタ&>(他の).m_ptr = NULL;
44      }
 45      
46      ポインタ&演算子 =(CONSTポインター&他の)
 47      {
 48          であればこの!=&その他)
 49          {
 50              であれば(m_ptr)
 51              {
 52                  削除m_ptr。
53              }
 54              
55              m_ptr = other.m_ptr。
56              はconst_cast <ポインタ&>(他の).m_ptr = NULL;
57          }
 58          リターン * この;
59      }
 60      
61      のT *の演算子 - > ()
 62      {
63          リターンm_ptr。
64      }
 65      
66ポインタ()
 67      {
 68          であれば(m_ptr)
 69          {
 70              削除m_ptr。
71          }
 72          m_ptr = NULL;
73      }
 74  }。
75  
76  のint main()の
 77  {
 78      ポインタ<Persion> P = 新しい Persion(" zhangsan "20 );
79      ポインター<Persion> P1 =ヌル;
80の      P1 = P。
81      P1-> ショー();
82      リターン 0 ;
83 }

 

おすすめ

転載: www.cnblogs.com/chusiyong/p/11295230.html