const_cast 演算子

クラスから 定数 volatile と __unaligned の属性を削除します。

const_cast < type-id > ( expression )

解説

どのオブジェクト型へのポインターまたはデータ メンバーへのポインターには 定数 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 の演算子は CCTest * に this のデータ型を変更し変更されたことを number メンバーができます。キャストはステートメントの残りの部分に対してのみ保持されます。

参照

関連項目

キャスト演算子

C++ のキーワード