以下の _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
: