以下の _currentHandle() とはどういう意味ですか?
template<class SpiHandleT>
class SpiHandleIterator : public ISpiHandleIterator<SpiHandleT>
{
public:
SpiHandleIterator() : _currentHandle()
{
}
...
protected:
SpiHandleT _currentHandle;
};
以下の _currentHandle() とはどういう意味ですか?
template<class SpiHandleT>
class SpiHandleIterator : public ISpiHandleIterator<SpiHandleT>
{
public:
SpiHandleIterator() : _currentHandle()
{
}
...
protected:
SpiHandleT _currentHandle;
};
これはvalue-initializationとして知られています。C++03 標準、§8.5/7 から:
初期化子が括弧の空のセット、つまり () であるオブジェクトは、値で初期化されます。
そして§8.5/5から:
タイプのオブジェクトを値で初期化
Tするとは、次のことを意味します。
- ユーザーが宣言したコンストラクターを持つクラス型の場合
T、デフォルトのコンストラクターTが呼び出されます (アクセス可能なデフォルトのコンストラクターがない場合、初期化は整形式でTはありません)。- ユーザーが宣言したコンストラクターを持たない非共用体クラス型の場合
T、すべての非静的データ メンバーと基本クラス コンポーネントTは値で初期化されます。- が配列型の場合
T、各要素は値で初期化されます。- それ以外の場合、オブジェクトはゼロで初期化されます
タイプのオブジェクトをゼロで初期化
Tするとは、次のことを意味します。
- がスカラー型の場合
T、オブジェクトは0(ゼロ) に変換された値に設定されTます。T非共用体クラス型の場合、各非静的データ メンバーと各基本クラス サブオブジェクトはゼロで初期化されます。Tが共用体型の場合、オブジェクトの最初の名前付きデータ メンバー) はゼロで初期化されます。- が配列型の場合
T、各要素はゼロで初期化されます。Tが参照型の場合、初期化は実行されません。
したがって、あなたの場合、それはの定義に依存しますSpiHandleT: