c++模板中set(date st):t(st)中的:符号

转载:https://zhidao.baidu.com/question/618119741512344012.html

半角冒号是构造函数里的初bai始化列表 开始du的标识。

如楼上所述:

set(date st):t(st){};  //这时定义在类里面,dao如果定义在外面,前面还会有个 set::

//等价与

set(data st)

t = st;

}

区别在于,第二种形式 t会多执行一步默认构造函数构造t(因为初始化列表为空,你没写),再在构造函数体语句块中 调用赋值操作符给t再赋一次值。

另外,对于一些特殊情况必须写在初始化列表里,如引用型属性的初始化。因为那才是初始化,语句块中的是初始化后的再赋值。

原文地址:https://www.cnblogs.com/MCSFX/p/13524726.html