C 型別轉換詳解 const cast

2021-07-16 09:57:34 字數 1616 閱讀 7787

一. 函式描述:

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. 常量指標被轉化成非常量指標,轉換後指標指向原來的變數(即轉換後的指標位址不變)。

[cpp]view plain

copy

class

a    

public

:    

intm_inum;    

};    

void

foo()    

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

[cpp]view plain

copy

class

a    

public

:  int

m_inum;  

};  

void

foo()      

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

[c-sharp]view plain

copy

void

foo()  

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

3. 新增const屬性

[c-sharp]view plain

copy

int

main(

intargc, 

char

** argv_)   

三. 總結:

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...