-1
A
回答
1
你正在談論默認構造函數(而不是重新分配或複製構造函數)。
const成員,其類型沒有明確定義默認構造函數
它禁止默認的構造函數,否則你將有一個未初始化的常量的值(所以沒用)。 (如果它不是const
,它未初始化的事實不是問題,我們可以稍後分配它)。
不具有一個在類初始化器
它也禁止的,如參考類似於非零常量指針基準部件。
struct NoDefaultConstructor
{
// No default constructor can be generated.
const int i; // which value to set by default ?
int& r; // reference which object by default?
};
struct InClassInitializerSoDefaultConstruct
{
// default constructor is generated here.
const int i = 42;
int j;
int& r = j;
};
編輯回答編輯Q
對於分配,const
值不能改變。 和引用類似於非空常量指針。
請注意,複製構造函數沒有此限制,因爲您可能(並且必須) 初始化const`值。
+0
對不起。我改變了我的問題。 – Zeukis 2014-08-31 15:48:22
相關問題
- 1. 是構造函數生成的默認構造函數嗎?
- 2. 成員沒有默認構造函數
- 3. 混合默認和非默認的構造函數
- 4. 類默認構造函數
- 5. 默認構造函數
- 6. 非默認構造函數
- 7. C++,默認構造函數
- 8. constexpr默認構造函數
- 9. 非默認構造函數
- 10. C++編譯器如何合成默認拷貝構造函數
- 11. Java默認構造函數問題 - 實際上構成「默認構造函數」的是什麼?
- 12. 默認構造函數與正常構造函數的類C++
- 13. 構造函數和默認構造函數的區別
- 14. 默認的構造函數的參數
- 15. 從參數化構造函數調用默認構造函數
- 16. 默認的默認構造函數,爲什麼不是用戶提供的默認構造函數?
- 17. 從另一個構造函數調用默認構造函數
- 18. 構造函數替換默認構造函數?
- 19. 繼承構造函數和默認構造函數
- 20. C++構造函數調用默認構造函數
- 21. 類型成員的默認構造函數的默認參數struct
- 22. 屬性構造函數的默認值?
- 23. NSObject的默認構造函數
- 24. 找不到默認的構造函數
- 25. 「RavenReader.Web.Controllers.UserController」沒有默認的構造函數
- 26. 使用默認的構造函數
- 27. System.Configuration.Cast沒有默認的構造函數
- 28. IntentService(kotlin)的默認構造函數
- 29. 沒有默認的構造函數
- 30. 避免默認的構造函數
由於引用*與const指針*相似,不能更改(僅初始化) – firda 2014-08-31 15:49:49
在您的原始問題中,您已經表明理解了'const'的推理:您不能重新分配'const'變量。既然同樣的推理也適用於參考變量,我不太明白你在問什麼。 – hvd 2014-08-31 15:50:04