[问题] 建构式初始化串行和式中赋值的不同

楼主: asktin (问问题专用)   2017-09-20 09:40:42
class employee
{
char *name;
// 式中赋值
employee(char* tmp )
{
name = tmp;
}
// 初始化串行
employee(char* tmp):name(tmp)
{
}
}
这二种不是一样吗? 请问何时要用初始化串行? 优缺点为何?
作者: bluesoul (忙死你老爸)   2017-09-20 09:48:00
式中赋值等于给值两次。如果成员没有默认建构子会失败https://goo.gl/mpWWH2
作者: steve1012 (steve)   2017-09-20 10:36:00
两个不一样
作者: notBeing (read and be read)   2017-09-20 10:44:00
改成char * const name 试试看
楼主: asktin (问问题专用)   2017-09-20 13:29:00
这样是不是能用初值串行就不要写在建构式中
作者: stucode   2017-09-20 13:41:00
一般来说是,除非有什么特别需求。
作者: outofyou   2017-09-20 14:06:00
继承的时候?
作者: Richun (解放左手的OO之力)   2017-09-20 14:17:00
如果class的const变量要初始化 好像只能用初始化串行
作者: s4300026 (s4300026)   2017-09-20 18:08:00
我都用 foo(char a): a{a}如果变量改成 const,那传入的是const不知道行不行
作者: eye5002003 (下一夜)   2017-09-20 20:33:00
C++11可以在成员宣告处直接赋值,比写在建构子更漂亮

Links booklink

Contact Us: admin [ a t ] ucptt.com