_currentHandle()在下面是什么意思?
template<class SpiHandleT>
class SpiHandleIterator : public ISpiHandleIterator<SpiHandleT>
{
public:
SpiHandleIterator() : _currentHandle()
{
}
...
protected:
SpiHandleT _currentHandle;
};
答案 0 :(得分:20)
这称为值初始化。从C ++ 03标准,§8.5/ 7:
一个对象,其初始化程序是一组空的括号,即(),应进行值初始化。
来自§8.5/ 5:
value-initialize
T
类型的对象意味着:
- 如果
T
是具有用户声明的构造函数的类类型,则调用T
的默认构造函数(如果T
没有可访问的默认值,则初始化不正确构造函数);- 如果
T
是没有用户声明的构造函数的非联合类类型,那么T
的每个非静态数据成员和基类组件都是值初始化的;- 如果
T
是数组类型,则每个元素都是值初始化的;- 否则,对象为零初始化
零初始化
T
类型的对象意味着:
- 如果
T
是标量类型,则将对象设置为0
(零)转换为T
的值;- 如果
T
是非联合类类型,则每个非静态数据成员和每个基类子对象都是零初始化的;- 如果
T
是联合类型,则对象的第一个命名数据成员)是零初始化的;- 如果
T
是数组类型,则每个元素都是零初始化的;- 如果
T
是引用类型,则不执行初始化。
因此,在您的情况下,它取决于SpiHandleT
: