[英]Constructor initialization list with empty initialization
_currentHandle()在下面是什么意思?
template<class SpiHandleT>
class SpiHandleIterator : public ISpiHandleIterator<SpiHandleT>
{
public:
SpiHandleIterator() : _currentHandle()
{
}
...
protected:
SpiHandleT _currentHandle;
};
这称为值初始化 。 从C ++ 03标准,§8.5/ 7:
初始值为空集括号的对象,即(),应进行值初始化。
从§8.5/ 5开始:
对值类型
T
的对象进行值初始化意味着:
- 如果
T
是具有用户声明的构造函数的类类型,则调用T
的默认构造函数(如果T
没有可访问的默认构造函数,则初始化是错误的);- 如果
T
是没有一个用户声明的构造的非联合类型,那么每个非静态数据成员和基础类组分T
是值初始化;- 如果
T
是数组类型,那么每个元素都是值初始化的;- 否则,该对象被零初始化
零初始化
T
类型的对象意味着:
- 如果
T
是标量类型,则将对象设置为0
(零)转换为T
;- 如果
T
是非联合类类型,则每个非静态数据成员和每个基类子对象都是零初始化的;- 如果
T
是联合类型,则对象的第一个命名数据成员)是零初始化的;- 如果
T
是数组类型,则每个元素都是零初始化的;- 如果
T
是引用类型,则不执行初始化。
所以在你的情况下,它取决于SpiHandleT
的定义:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.