const_cast 運算子
移除 const, volatile,以及 __unaligned 類別的屬性。
const_cast < type-id > ( expression )
備註
任何物件型別的指標或資料成員的指標可以明確地轉換成除了都完全相同的型別 const, volatile,以及 __unaligned 的限定詞。 指標和參考,結果會參考原始物件。 資料成員的指標,結果將會參考相同的成員,與原始資料成員 (uncast) 指標。 參考的物件而定,透過產生的指標、 參考或指向資料成員的寫入作業可能會產生未定義的行為。
您不能使用const_cast運算子來直接覆寫固定變數的常數的狀態。
const_cast運算子將 null 指標值轉換成目的型別時發現 null 指標值。
範例
// expre_const_cast_Operator.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class CCTest {
public:
void setNumber( int );
void printNumber() const;
private:
int number;
};
void CCTest::setNumber( int num ) { number = num; }
void CCTest::printNumber() const {
cout << "\nBefore: " << number;
const_cast< CCTest * >( this )->number--;
cout << "\nAfter: " << number;
}
int main() {
CCTest X;
X.setNumber( 8 );
X.printNumber();
}
在上一行包含const_cast,資料類型this指標位於const CCTest *。 const_cast運算子會變更的資料型別this指標CCTest *,可讓成員number被修改。 轉型只會持續所在的陳述式的其餘部分。