const_cast 演算子const_cast Operator

削除、 constvolatile、および __unalignedクラスから属性。Removes the const, volatile, and __unaligned attribute(s) from a class.


const_cast <type-id> (expression)


任意のオブジェクト型へのポインターまたはデータ メンバーへのポインターを除いて同一である型に明示的に変換できる、 constvolatile、および __unaligned修飾子。A pointer to any object type or a pointer to a data member can be explicitly converted to a type that is identical except for the const, volatile, and __unaligned qualifiers. ポインターと参照の場合、結果は元のオブジェクトを参照します。For pointers and references, the result will refer to the original object. データ メンバーへのポインターの場合、結果は元の (キャストされていない) ポインターが指していたデータ メンバーと同じメンバーを参照します。For pointers to data members, the result will refer to the same member as the original (uncast) pointer to data member. 参照されるオブジェクトの型によっては、結果のポインター、参照、またはデータ メンバーへのポインターを通じた書き込み操作で未定義の動作が発生する可能性があります。Depending on the type of the referenced object, a write operation through the resulting pointer, reference, or pointer to data member might produce undefined behavior.

使用することはできません、 const_cast定数変数の定数のステータスを直接オーバーライドする演算子。You cannot use the const_cast operator to directly override a constant variable's constant status.

Const_cast演算子は、null ポインターの値を変換先の型の null ポインター値に変換します。The const_cast operator converts a null pointer value to the null pointer value of the destination type.


// expre_const_cast_Operator.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;
class CCTest {
   void setNumber( int );
   void printNumber() const;
   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 );

含む行で、 const_castのデータ型、thisポインターがconst CCTest *します。On the line containing the const_cast, the data type of the this pointer is const CCTest *. const_cast演算子のデータ型を変更する、thisへのポインター CCTest *、メンバーを許可するnumberを変更します。The const_cast operator changes the data type of the this pointer to CCTest *, allowing the member number to be modified. キャストは、そのキャストが発生したステートメントの残り時間の間だけ持続します。The cast lasts only for the remainder of the statement in which it appears.

関連項目See also

キャスト演算子Casting Operators