const_cast 運算子

const 類別中移除 、 volatile__unaligned 屬性。

語法

const_cast <type-id> (expression)

備註

任何物件類型的指標或資料成員的指標可以明確轉換成除了 、 volatile__unaligned 限定詞以外的 const 相同型別。 對於指標和參考,其結果會參考原始物件。 對於資料成員的指標,則結果會參考與資料成員的原始 (未轉型) 指標相同的成員。 根據所參考物件的類型,透過產生的指標、參考或資料成員的指標進行寫入作業,可能會產生未定義的行為。

您無法使用 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 。 轉換只會在其出現之陳述式的其餘部分中持續進行。

另請參閱

轉型運算子
關鍵字