const_cast conversion
提供:cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
異なるCV-資格を持つ型の間で変換を行い.
Original:
Converts between types with different cv-qualification.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
目次 |
[編集] 構文
const_cast < new_type > ( expression )
|
|||||||||
タイプ
new_typeの値を返します。.Original:
Returns a value of type
new_type.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集] 説明
のみ次の変換がconst_castで行うことができます。具体的には、唯一のconst_castは(削除)const性またはボラティリティを捨てに使用されるかもしれません.
Original:
Only the following conversions can be done with const_cast. In particular, only const_cast may be used to cast away (remove) constness or volatility.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
1)
同じタイプの二つの可能性があるマルチレベルのポインタは関係なく、それぞれのレベルでのcv-修飾子の、互いの間で変換されることがあり.
Original:
Two possibly multilevel pointers to the same type may be converted between each other, regardless of cv-qualifiers at each level.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
2)
任意のタイプの
Tの左辺値はcv修飾多かれ少なかれ同じ型Tに左辺値または右辺値参照に変換してもよい。同様に、右辺値は、多かれ少なかれのcv-修飾右辺値参照に変換されることがあり.Original:
lvalue of any type
T may be converted to a lvalue or rvalue reference to the same type T, more or less cv-qualified. Likewise, an rvalue may be converted to a more or less cv-qualified rvalue reference.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
3)
同じ規則がデータメンバに対しておそらくマルチレベルポインタに適用さ.
Original:
Same rules apply to possibly multilevel pointers to data members.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
4)
ヌルポインタの値はnew_typeのヌルポインタ値に変換してもよい
Original:
null pointer value may be converted to the null pointer value of new_type
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
すべてのキャスト式と同様に、結果は次のとおりです
Original:
As with all cast expressions, the result is:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- new_type場合左辺値は左辺値参照型または型を機能させるには右辺値参照である;Original:an lvalue if new_type is an lvalue reference type or an rvalue reference to function type;The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - new_type場合はxValueは、オブジェクト型への右辺値参照である;Original:an xvalue if new_type is an rvalue reference to object type;The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - そうでなければprvalue.Original:a prvalue otherwise.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[編集] ノート
メンバ関数への関数へのポインタとポインタがconst_castの対象ではありません
Original:
Pointers to functions and pointers to member functions are not subject to const_cast
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
const_castはconstは未定義の動作を呼び出すと宣言されたオブジェクトへの書き込み結果のポインタまたは参照を使用して、任意のポインタまたは参照のconst性を除去することができるにもかかわらず.
Original:
Even though const_cast may remove constness from any pointer or reference, using the resulting pointer or reference to write to an object that was declared const invokes undefined behavior.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集] キーワード
[編集] 例
#include <iostream> struct type { type() :i(3) {} void m1(int v) const { // this->i = v; // compile error: this is a pointer to const const_cast<type*>(this)->i = v; // OK } int i; }; int main() { int i = 3; // i is not declared const const int& cref_i = i; const_cast<int&>(cref_i) = 4; // OK: modifies i std::cout << "i = " << i << '\n'; type t; t.m1(4); std::cout << "type::i = " << t.i << '\n'; const int j = 3; // j is declared const int* pj = const_cast<int*>(&j); *pj = 4; // undefined behavior! void (type::*mfp)(int) const = &type::m1; // pointer to member function // const_cast<void(type::*)(int)>(mfp); // compiler error: const_cast does not // work on function pointers }
Output:
i = 4 type::i = 4