[問題] 建構式初始化串列和式中賦值的不同

作者: 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