從 const類別中移除、 volatile和 __unaligned 屬性。
語法
const_cast <type-id> (expression)
備註
任何物件類型的指標或數據成員的指標可以明確轉換成除了 、 const和 volatile 限定符以外的__unaligned相同型別。 對於指標和參考,其結果會參考原始物件。 對於資料成員的指標,則結果會參考與資料成員的原始 (未轉型) 指標相同的成員。 根據所參考物件的類型,透過產生的指標、參考或資料成員的指標進行寫入作業,可能會產生未定義的行為。
您無法使用 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 。 轉換只會在其出現之陳述式的其餘部分中持續進行。