Q
聲明字符串常量
-1
A
回答
0
有一個很大的區別,它是如何影響你的代碼取決於許多因素。通常第二個不推薦,因爲你不能保證什麼時候std :: string對象會被構造或者被破壞。
它最好由Google C++ Style Guide總結:
具有靜態存儲類類型的變量是被禁止的:他們會由於建設和毀滅的不確定的順序難以發現漏洞。但是,如果這些變量是constexpr,則允許使用這些變量:它們沒有動態初始化或破壞。
具有靜態存儲持續時間的對象,包括全局變量,靜態變量,靜態類成員變量和函數靜態變量,必須爲普通舊數據(POD):只有整數,字符,浮點數或指針或數組/結構的POD。
他們禁止第二:
因此,我們只允許靜態變量包含POD數據。這個規則完全禁止使用std :: vector(改用C數組)或string(使用const char [])。
+0
請注意,Google不被視爲C++的權威機構。例如,建議使用C數組替代'std :: vector'完全忽略'std :: array'。 – MSalters
相關問題
- 1. 常量字符串的格式聲明
- 2. 聲明字符串
- 3. C++字符串變量聲明
- 4. 無法聲明字符串變量
- 5. 尚未聲明的字符串變量
- 6. 錯誤使用C常量字符串聲明
- 7. C# - 這個聲明的字符串被視爲一個常量?
- 8. 錯誤:期望的聲明說明符或'...'在字符串常量之前
- 9. 預期的聲明說明符或'...'在字符串常量之前
- 10. 字符串未被聲明?
- 11. C字符串聲明
- 12. 聲明通過字符串
- 13. C++字符串聲明
- 14. 聲明從字符串
- 15. 如何在c#中聲明具有特殊字符的字符串常量
- 16. 字符串格式:字符串常量中的字符串說明符
- 17. 在常量聲明
- 18. 雙常量聲明
- 19. 字符串常量
- 20. 如何聲明一串字符串?
- 21. 字符串未聲明的標識符
- 22. 在c中聲明十六進制字符'錯誤:多字符字符常量'
- 23. 聲明向量的指針向量的字符串
- 24. 以字符串的最後一個字,變量未聲明?
- 25. 從類中聲明的字符串變量中提取字符串資源?
- 26. 聲明變量分裂字符串在C#和搜索這些字符串
- 27. 的毗連正則表達式與常量聲明字符串作爲oneliner
- 28. 如何在MXML組件的ID聲明中使用字符串常量
- 29. 聲明屬性名稱爲字符串常量是好方法嗎?
- 30. 如何在類中聲明和初始化靜態常量字符串?
那麼,第一個顯然是編譯時常量表達式,而第二個在運行時分配動態內存。這完全取決於你的用例。 – DeiDei
因此,第一種形式沒有明確的優勢? – Ted