歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++中const的使用

C++中const的使用

日期:2017/3/1 10:03:19   编辑:Linux編程

1. const string* p和String * constp

助記方法:* 讀成 pointer to ,倒著讀

const string* p
const 在 * 左邊,說明定義的是指向string常量的指針,p指針可以改變,但是原來指向的string不能變
倒著讀:p a const pointer to string
string const * p; //因為沒有const*,所以const 跟隨前面的string

String * const p
const 在 *右邊,說明定義的是常指針,常指針指向一個string,就是說p不允許再指向別處,p不能變,但是string可以變
倒著讀:p is a pointer to const string

比如:
char * const p;
p++ 不可以,因為你改變了P

const char *p;
p++ //可以


2.const作為函數形參
如果有修改參數值的必要,就用一般引用, 表示 "我這個函數有可能會修改你傳遞過來的參數",采用引用避免的復制實參拷貝的消耗;
如果僅僅讀取參數值, 那麼就用const引用, 表示"我這個函數絕對不會修改你傳遞過來的參數",這樣的好處是const實參或者非const形參都可以調用該函數;
特別是注意:"hello world" 是constchar*類型,不能作為char*的實參,對於變量的約束,允許加強,當絕對不能削弱

3.const和非const之間的轉換
const_cast(expression)
常量指針被轉化成非常量指針,並且仍然指向原來的對象;
常量引用被轉換成非常量引用,並且仍然指向原來的對象;
另外還可以用定義一個另外的變量實現copy轉換。

類似的cast函數:
static_cast (expression)
該運算符把expression轉換為type-id類型,但沒有運行時類型檢查來保證轉換的安全性
reinterpret_cast (expression)
dynamic_cast (expression)

Copyright © Linux教程網 All Rights Reserved