- メインページ
- モジュール
- ネームスペース
- データ構造
- ファイル

- データ構造
- データ構造索引
- クラス階層
- データフィールド

Public 型 | Public メソッド
クラス テンプレート mist::shared_ptr< T >
メモリ領域の自動開放を行うポインタ

オブジェクトへのポインタの参照カウントを管理し，どこからも参照されなくなったときにメモリを自動開放するポインタ [詳細]

`#include <pointer.h>`

mist::__shared_memory__::shared_base< T >を継承しています。

## Public 型
typedef size_t | size_type
| 符号なしの整数を表す型．コンテナ内の要素数や，各要素を指定するときなどに利用し，内部的には size_t 型と同じ
typedef ptrdiff_t | difference_type
| 符号付きの整数を表す型．コンテナ内の要素数や，各要素を指定するときなどに利用し，内部的には ptrdiff_t 型と同じ
typedef T | value_type
| 内部データ型．T と同じ
typedef T * | pointer
| データ型のポインター型．data の場合，data * となる
typedef T & | reference
| データ型の参照．data の場合，data & となる
typedef const T & | const_reference
| データ型の const 参照．data の場合，const data & となる
typedef const T * | const_pointer
| データ型の const ポインター型．data の場合，const data * となる

## Public メソッド
| shared_ptr ()
| 未管理のポインタで初期化
| shared_ptr (pointer p)
| 管理するポインタを設定し，参照カウントを 1 増やす
| shared_ptr (const shared_ptr &p)
| 他の共有メモリポインタを用いて初期化し，参照カウントを 1 増やす
| ~shared_ptr ()
| 管理するポインタの参照カウントを1減らす
const shared_ptr & | operator= (const shared_ptr &p)
| 他の共有メモリポインタを代入する
reference | operator* ()
| ポインタが指す内容への参照を返す
const_reference | operator* () const
| ポインタが指す内容への参照を返す
pointer | operator-> ()
| ポインタが指す内容へのアクセスを行う
const_pointer | operator-> () const
| ポインタが指す内容へのアクセスを行う
void | reset ()
| 管理しているポインタの参照カウントを減らす
bool | operator== (const shared_ptr &p) const
| 2つのポインタが同一かどうかを判定する
bool | operator!= (const shared_ptr &p) const
| 2つのポインタが等しくないどうかを判定する
bool | operator< (const shared_ptr &p) const
| 2つのポインタの < を判定する
bool | operator<= (const shared_ptr &p) const
| 2つのポインタの <= を判定する
bool | operator> (const shared_ptr &p) const
| 2つのポインタの > を判定する
bool | operator>= (const shared_ptr &p) const
| 2つのポインタの >= を判定する
bool | operator== (const pointer &p) const
| 2つのポインタが同一かどうかを判定する
bool | operator!= (const pointer &p) const
| 2つのポインタが等しくないどうかを判定する
bool | operator< (const pointer &p) const
| 2つのポインタの < を判定する
bool | operator<= (const pointer &p) const
| 2つのポインタの <= を判定する
bool | operator> (const pointer &p) const
| 2つのポインタの > を判定する
bool | operator>= (const pointer &p) const
| 2つのポインタの >= を判定する

## 説明

### template<class T>
class mist::shared_ptr< T >

オブジェクトへのポインタの参照カウントを管理し，どこからも参照されなくなったときにメモリを自動開放するポインタ

注意
  配列に対しては利用できない
  循環参照が発生した場合は，正しく管理できない

ポインタの使用例
{
mist::shared_ptr< std::string > a;
{
mist::shared_ptr< std::string > b = new std::string( "test" );
a = b; // a が b と同じメモリ領域を参照するようにし，参照カウントを増やす
} // <- ここでは b に割り当てたメモリ領域の参照カウントが減るが，a が同じ領域を参照しているので，メモリ領域は開放されない
...
} // <- ここで a に割り当てたメモリ領域がどこからも参照されなくなるため，メモリ領域が自動的に開放される

## コンストラクタとデストラクタ

template<class T>

mist::shared_ptr< T >::~shared_ptr | ( |  | ) |
| inline

管理するポインタの参照カウントを1減らす

どこからも参照されなくなったらメモリを開放する

## 関数

template<class T>

const shared_ptr& mist::shared_ptr< T >::operator= | ( | const shared_ptr< T > & | p | ) |
| inline

他の共有メモリポインタを代入する

注意
  すでに管理しているポインタがある場合は，参照カウントを1減らす
  その際に，どこからも参照されなくなったらメモリを開放する

template<class T>

void mist::shared_ptr< T >::reset | ( |  | ) |
| inline

管理しているポインタの参照カウントを減らす

注意
  どこからも参照されなくなったらメモリを開放する

このクラスの説明は次のファイルから生成されました:

- pointer.h