我在看一個成員函數靜態函數VS const函數
int funct(int x) const;
而且我想知道如果
static int funct(int x);
會更好。
如果成員函數不使用任何成員變量,它應該是靜態的。有沒有什麼會阻止這一點?
我在看一個成員函數靜態函數VS const函數
int funct(int x) const;
而且我想知道如果
static int funct(int x);
會更好。
如果成員函數不使用任何成員變量,它應該是靜態的。有沒有什麼會阻止這一點?
假設這是C++,聲明爲const的函數表示它不打算更改調用它的實例上的數據成員,即該指針。既然有辦法迴避這個問題,這不是一個保證,而只是一個聲明。
靜態函數不能在特定的實例上運行,因此不需要「this」指針。因此,它是非常天真的「常量」。
如果你的方法不需要被綁定到一個特定的實例,那麼使它成爲靜態是有意義的。然而,如果你的方法是多態的 - 也就是說,你提供了一個基於調用它的對象實例的不同實現,那麼它不能是靜態的,因爲它依賴於特定的實例。
是的。我和我的同事聊了聊,然後我們也想到了同樣的想法。謝謝。 – baash05 2010-04-14 23:17:37
如果一個成員函數沒有使用任何成員變量,那麼通常值得提問:
「這首先需要成員函數嗎?」
我的一個研究表明const方法允許多態性。這太有趣了。思考? – baash05 2010-03-30 01:52:36
爲什麼這是社區Wiki? – Uri 2010-03-30 02:18:23
因爲沒有真正的答案。 (超出了我的伴侶提議的),我不喜歡有額定的問題。在過去,技術性問題已經使我失去了一些觀點。 我不會對我的個人觀點發出噓聲,但我覺得個人無效。 如果我問T | S | A,我輸了。如果我問一個「你最喜歡什麼......」,我就會獲益。我的理解是社區維基只留下我的觀點。 – baash05 2010-04-14 23:13:07