C++ 型別轉換詳解 -- const_cast

發表於2016-11-29

一. 函式描述:

const_cast ( expression )

主要是用來去掉const屬性,當然也可以加上const屬性。主要是用前者,後者很少用。

去掉const屬性:const_case (&num),常用,因為不能把一個const變數直接賦給一個非const變數,必須要轉換。

加上const屬性:const int* k = const_case(j),一般很少用,因為可以把一個非const變數直接賦給一個const變數,比如:const int* k = j;

二. 使用範圍:

1. 常量指標被轉化成非常量指標,轉換後指標指向原來的變數(即轉換後的指標地址不變)。

2. 常量引用轉為非常量引用。

2. 常量物件(或基本型別)不可以被轉換成非常量物件(或基本型別)。

記住這種轉換隻是開了一個介面,並不是實質上的轉換。(其實也算是實質上的轉換了,只不過表達上不允許這樣寫)

3. 新增const屬性

三. 總結:
1. 使用const_cast去掉const屬性,其實並不是真的改變原類型別(或基本型別)的const屬性,它只是又提供了一個介面(指標或引用),使你可以通過這個介面來改變型別的值。也許這也是const_case只能轉換指標或引用的一個原因吧。

2. 使用const_case新增const屬性,也是提供了一個介面,來不讓修改其值,不過這個新增const的操作沒有什麼實際的用途(也許是我認識太淺了)。

相關文章