const_cast是C++此中一種類型轉換運算符,它只有一種用途,就是改變值為const 或 volatile, 因為編程時會無意間改變變量的類型,是以利用const_cast運算符會加倍平安!下面將申明如何利用const_cast進行類型轉換以及它存在的局限!
起首界說基類CLow,然后實現對應代碼
然后界說子類CHigh, 擔當CLow, 然后實現對應代碼
完當作上面的根本代碼之后,本家兒函數輸入以下測試代碼,界說一個const的指針,然后經由過程const_cast進行轉換,刪除const標簽
點竄本家兒函數的測試代碼,經由過程const_cast將const High * 轉換為const Low *
點擊運行調試,編譯報錯,無法轉換,申明const_cast不克不及進行分歧類型的轉換,只能改變const或者volatile特征
我們也可以經由過程采用通用的方式來進行強制類型轉換,可是如許有可能會改變類型,因為可以或許將const CHigh *改為CLow *而沒有編譯報錯,是以平安性不敷
const_cast可以去失落const標簽,可是紛歧心猿意馬能過改變變量的值,下面舉個例子進行申明,起首界說如下函數,轉換const int *的類型為 int * , 然后對值進行點竄
本家兒函數添加如下的測試代碼,注重界說了兩個變量一個示int, 另一個是const int
最后運行的成果如下所示,從中可以看出,iNum1的值改變,而iNum2的值沒有改變,所以僅當指標的目的的值不是const時,才能對值進行改變
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!