const_cast 運算子
從類別移除 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。 轉換只會在其出現之陳述式的其餘部分中持續進行。