作者adrianshum (Alien)
看板Programming
标题Re: static variable and const method in C++
时间Sat Apr 12 23:33:07 2008
※ 引述《previewslave (虾虾虾虾 来玩围棋吧)》之铭言:
: 嗨,陈君,在下是大师。
:
: 在类别内:(C++)
: class CA()
: {
: static int x;
: …
: void fA() { … }
: …
: };
: int CA::x = 0; // 使用范畴算子 :: 来设定。别忘了要加上型态
错。
最重点是要放在 source file 里作 initialization.
照你这样写又放在 header 还是会 error
:
: 其他:在类别的静态函数内,用法如同在函式内。
:
: ※ 引述《sorryChen (陈扬和)》之铭言:
: : 写了那麽多年C++很汗颜 这个基本的概念没搞懂
: : 以前只用 static const variable,直接在.h class define就assign了
: : 或用 static function
: : 就是没用到成员变数 不需要new instance就可以call的函数)
: : 但一直没搞懂 首先 如果定义static (not const) variable,要在哪里initialize
: : 外面或是成员函式吗?
: : 还有 const function
: : (可参看 http://en.wikipedia.org/wiki/Static_variable)
: : 是说 如他那样定义 是说可以改变const variable吗
: : 而且在他C++的例子中count并非constant..只是static
: : 为什麽需要const function去回传他呢
: : 希望有大师可以回答
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 211.76.58.205
: 推 sorryChen:大师 好像还是有link error LK2005 128.125.87.33 04/12 16:17
: → sorryChen:大师,为何wiki的例子中Count()要加const 128.125.87.33 04/12 16:18
: → previewslave:问题一,解:请贴完整程式码。 211.76.58.205 04/12 21:07
: → previewslave:问题二,解:此乃保证不更动物件变数 211.76.58.205 04/12 21:08
: → previewslave: 之宣告。 211.76.58.205 04/12 21:09
补充一点。
加上 const 作此保证的引申效用则是可以 invoke 一个 const object instance
的该 method.
class Foo {
public:
void constBar() const;
void nonConstBar();
}
void main() {
const Foo constFoo;
constFoo.constBar(); // 行
constFoo.nonConstBar(); // 不行
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.78.81.71
1F:推 previewslave:唉呀,果然是大师。 211.76.58.205 04/13 00:18
※ 编辑: adrianshum 来自: 219.78.81.71 (04/13 01:45)
2F:推 sorryChen:大师..其实不懂为何.nonConstBar不行 128.125.87.33 04/13 03:57