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
。 轉換只會在其出現之陳述式的其餘部分中持續進行。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應