【Exceptional C++(24)】变量的初始化
2018-01-30 本文已影响4人
downdemo
T t = u; // 通过拷贝构造函数拷贝初始化
// 虽然有=但仍然是一个初始化操作而非赋值操作
// 允许用=只是为了沿用C的语法,operator=不被调用
// 如果u也是T类型,与T t(u)等价,调用拷贝构造函数
// 如果是其他类型,与T t(T(u))等价
// u被转换成T类型临时对象,t由此拷贝构造出来
T t(u); // 通过构造函数T::T(u)直接初始化
T t(); // 看上去像变量声明,实际是一个函数声明
T t; // t被默认构造函数T::T()初始化
- 建议总是使用T t(u)形式,因为只要可以用T t = u的地方都可以用它,而且它还可以支持多个参数