Re: [問題] initialize const data member

看板C_and_CPP (C/C++)作者 (上大學好忙喔)時間15年前 (2011/04/11 19:46), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《startbomb51 (~森林之熊~)》之銘言: : 請問一下 : 如果我現在寫了兩個分檔 : 一個A.h (裡面放class的宣告等) : 另一個A.cpp (裡面就是一些建構子或函式定義) : 現在A.h裡面 : class A{ : private: : const int x; : }; : 我記得好像const的值要在宣告時就先初始化 : 可是好像沒辦法在.h檔裡面做 (印象中,不曉得有無出入 : 在.cpp檔建立建構子初始 系統又叫我到.h檔做= = : 被這問題煩好久了... 如果是const member的話 必須在member initialization list做初始化 A::A():x(the_number_of_x) { } 因為constructor是在物件已經產生後才執行的 此時const member就應該是const 如果是static member的話 必須在宣告的地方做初始化 class A{ static int x = 1; } 因為static member是共享於該class所有instance 不能在constructor初始化 因為constructor在你每次產生物件的時候都會執行一次 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.154.15

04/11 22:48, , 1F
static const int才可在class內初始化吧,其他都要宣告
04/11 22:48, 1F

04/11 22:48, , 2F
之後再執行初始化
04/11 22:48, 2F
文章代碼(AID): #1Dekd-EZ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Dekd-EZ (C_and_CPP)