1
A
回答
5
初始化const
成員(以及參考成員),你需要使用constructor initialization lists。
這是你會怎麼做它在C++ 11(字符串是按值傳遞,然後移動,這樣,當一個右值中輸入的是構造不復制將被執行):
#include <string>
struct X
{
X(std::string s_) : s(std::move(s_)) { }
// ^^^^^^^^^^^^^^^^^^
std::string const s;
};
在C++ 03你會做這種方式:
#include <string>
struct X
{
X(std::string const& s_) : s(s_) { }
// ^^^^^^^
std::string const s;
};
相關問題
- 1. const成員函數
- 2. 從const成員函數調用非const成員函數
- 3. 調用從const成員函數非const成員函數指針
- 4. C++ const成員函數
- 5. * this和const成員函數
- 6. 調用const成員函數
- 7. 約const成員函數
- 8. Const靜態成員函數
- 9. const成員函數可變
- 10. 爲const char *成員
- 11. 與其他靜態const成員初始化靜態const成員
- 12. 爲什麼const成員函數能夠通過成員指針調用非const成員函數?
- 13. 成員函數和const成員函數指針扣
- 14. 防止const成員函數更改成員數組
- 15. 修改const對象的非const成員
- 16. const成員返回作爲非const
- 17. const成員函數澄清需要
- 18. C++ const成員函數(初級)
- 19. 爲什麼使用const成員函數?
- 20. 改變const對象的數組成員
- 21. 易失性的成員函數和const
- 22. 指針const成員函數的typedef
- 23. 從const成員函數返回類成員上的指針
- 24. boost :: const成員可選
- 25. 的const_cast靜態const成員
- 26. 是與非const成員
- 27. C++轉換const成員
- 28. const成員函數如何更改對象的數據?
- 29. const成員函數VS const的返回類型
- 30. 將const成員函數強制轉換爲非const
作爲建議的一般一塊,不可轉讓的數據成員(諸如'的std :: string const成員;')可以使班級尷尬使用。將非const的成員保留下來是非常常見的,同時確保類的用戶只有通過非可變接口才能看到它,如果他們需要查看它的話。這些建議似乎違背了常量安全的精神,但它可以免除你很多痛苦。 –
@LucDanton我認爲沒有。它不違背常數安全的精神。常量安全更多的是當類處於「恆定狀態」或其他狀態時類的行爲。它更多的是類接口對其成員施加的約束,而不是成員對類接口施加的約束。所以,簡單地說,你的建議是正確的。 :) –