看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
tomap41017:static const int才可在class內初始化吧,其他都要宣告 04/11 22:48
tomap41017:之後再執行初始化 04/11 22:48