一. 函式描述:
const_cast < type-id > ( expression )
主要是用來去掉const屬性,當然也可以加上const屬性。主要是用前者,後者很少用。
去掉const屬性:const_case(&num),常用,因為不能把乙個const變數直接賦給乙個非const變數,必須要轉換。
加上const屬性:const int* k = const_case(j),一般很少用,因為可以把乙個非const變數直接賦給乙個const變數,比如:const int* k = j;
二. 使用範圍:
1. 常量指標被轉化成非常量指標,轉換後指標指向原來的變數(即轉換後的指標位址不變)。
class a
public:
int m_inum;
};
void foo()
public:
int m_inum;
};void foo()
2. 常量物件(或基本型別)不可以被轉換成非常量物件(或基本型別)。
void foo()
記住這種轉換只是開了乙個介面,並不是實質上的轉換。(其實也算是實質上的轉換了,只不過表達上不允許這樣寫)
3. 新增const屬性int main(int argc, char ** argv_)
{ int i = 100;
int *j = &i;
const int *k = const_cast(j);
//const int *m = j; 感覺和這樣寫差不多
//指的位址都一樣
cout <
三. 總結:
1. 使用const_cast去掉const屬性,其實並不是真的改變原類型別(或基本型別)的const屬性,它只
是又提供了乙個介面(指標或引用),使你可以通過這個介面來改變型別的值。也許這也是const_case只
能轉換指標或引用的乙個原因吧。
2. 使用const_case新增const屬性,也是提供了乙個介面,來不讓修改其值,不過這個新增const的
操作沒有什麼實際的用途(也許是我認識太淺了)。
三. 總結:
1. 使用const_cast去掉const屬性,其實並不是真的改變原類型別(或基本型別)的const屬性,它只
是又提供了乙個介面(指標或引用),使你可以通過這個介面來改變型別的值。也許這也是const_case只
能轉換指標或引用的乙個原因吧。
2. 使用const_case新增const屬性,也是提供了乙個介面,來不讓修改其值,不過這個新增const的
操作沒有什麼實際的用途(也許是我認識太淺了)。
c 型別轉換詳解
c 型別轉換分為隱式型別轉換和顯式型別轉換 又稱為 標準轉換 包括以下幾種情況 1,算術轉換 arithmetic conversion 在混合型別的算術表示式中,最寬的資料型別成為目標轉換型別。int ival 3 double dval 3.14159 ival dval ival被提公升為do...
C 型別轉換詳解
目錄 c 對於內建型別有隱式或顯式的型別轉化,如int,double,long,char,但是,c 還有類這個概念,類是一種自定義型別,為了讓類 自定義型別 達到內建型別的層次,c 對類也挺提供一些方法進行自動或者強制型別轉換 c 的好多任務作,在我看來就是讓自定義型別能和內建型別一樣簡單使用 操作...
C 型別轉換詳解 const cast
一.函式描述 const cast type id expression 主要是用來去掉const屬性,當然也可以加上const屬性。主要是用前者,後者很少用。去掉const屬性 const case num 常用,因為不能把乙個const變數直接賦給乙個非const變數,必須要轉換。加上const...