作者CrBoy (上大學好忙喔)
看板C_and_CPP
標題Re: [問題] C++一個問題
時間Mon Apr 11 19:46:04 2011
※ 引述《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