嗯,這可能會懷疑可能有重疊,相當數量的這些問題:如何在構造的C++類中設置一個const成員變量?
how to initialize const member variable in a class C++
Const Member Variables in C++11
Initializing a const member variable after object construction
然而,這些都不能夠回答我原來的問題。主要區別在於我不想用設定值初始化,但使用構造函數參數。
我想要做的是一樣的東西這個 -
class myRectangle {
private:
const int length; //const mainly for "read-only" like
const int breadth; //protection
public:
myRectangle(int init_length, int init_breadth);
int calcArea(void);
void turn90Degrees(void);
/* and so on*/
}
其中兩個長度和寬度都有點只讀保護,施工後改變他們。
但當然我的編譯器不會允許我將它們設置在構造函數中,因爲它們實際上是const ...
我想出了一個解決方法,只留下它們變量,只實現getter方法,因此它們不能有效被改變,但我幾乎覺得我錯過了這裏明顯的解決方案。
另外我覺得我在某種程度上誤解了const的使用。那麼它是否已經是一個編譯時合同,不會改變那裏的數據呢?因爲根據我的理解,不知道常量在執行程序時是否需要足夠的信息?
而順便說一句,使恆定靜態的解決方案不適合我,因爲我產生的每個矩形應該有不同的大小。
謝謝您的回答和澄清!
解決方案:初始化器列表/委託構造
MSDN Entry of the solution from Jason R
「但是當然,我的編譯器不允許我在構造函數中設置它們,因爲它們實際上是const ...」當然它會。只要確保你*初始化*他們,而不是分配給他們。 – juanchopanza
你能解釋*爲什麼* [這個問題](http://stackoverflow.com/q/14495536/3953764)不回答你的? –
@Piotr Skotnicki因爲他想用一個設定值初始化const(在他的情況下是100) - 我自己在我的程序中不知道它會有什麼價值 – Saltus