const 基本用途
告知編譯器這個值為「常數」無法被修改。
- 一般作用
const int index = 5; index = 8; // error: assignment of read-only variable 'index'
- 作用於 *
// const pointer char * const constptr = initptr; *constptr = 1; // 改變其 value OK constptr = otherptr; // 改變其 addr Error // const value const char * constval = "const value"; *constval = "nomal value"; // 改變其 value Error constval = otherptr; // 改變其 addr OK // const pointer & const value const char * const consteverything = "ulti - const";
const 常見用途 : const&
在 C++ 可能常常看到 void function (type_Name const&); "type_Name const&" 是可以寫成 "const type_Name &"
int i = 10;
const int &r = i; // reference to const
++i; // i 仍然可以修改
++r; // r 不行 (expression must be a modifiable lvalue)
通常追求效率的 C++ 工程師,會選擇 pass by reference 來防止程式做不必要的 Copy,這時 const 通常就會出現,來確保原始 value 不會被亂改。且 const 的出現可以使 call function 時,使用 rvalue。
std::vector mySort(std::vector const &str)
{
std::vector r(str);
std::sort(r.begin(), r.end());
return r;
}
mySort({"abc", "def", "xyz"});
相關文章 :
C/C++ - 左值、右值 ( lvalue、rvalue )
讀書心得 - C++ Primer (5th Edition) - Chapter 2 (2)
參考資料 :
0 意見:
張貼留言