C++転換
1166 ワード
Cスタイルの転換動作
2つの形式に差はなく、純粋に
C++の転換動作
C++は4つの新しい転換を提供する(new-styleまたはC+-style castsと呼ばれることが多い) const_cast (expression) dynamic_cast (expression) reinterpre_cast (expression) static_cast (expression)
目的はそれぞれ異なります.
(T) expression // expression T
```
T(expression) // expression T
2つの形式に差はなく、純粋に
の配置位置が異なるだけです.C++の転換動作
C++は4つの新しい転換を提供する(new-styleまたはC+-style castsと呼ばれることが多い)
目的はそれぞれ異なります.
const_cast
は、通常、オブジェクトの定数を除去するために使用される.この機能を持つ唯一のC++style変換オペレータでもあります.dynamic_cast
は、主に「安全なダウンシフト」(safe downcasting)を実行するために使用され、すなわち、あるオブジェクトが継承システムのタイプに帰属するかどうかを決定するために使用される.これは、C構文の変換によって実行できない唯一の動作であり、重大な実行コストを消費する可能性のある唯一の変換動作でもあります.retinterpret_cast
は低レベルの移行を意図しており、実際の動作(および結果)はコンパイラに依存する可能性があります.これは移植不可能であることを意味します.例えば、pointer to int
は、int
に変換される.このようなモデルチェンジは、低レベルコード以外では珍しい.static_cast
は、non−constオブジェクトをconstオブジェクトに変換したり、intをdoubleに変換したりするなど、暗黙的変換を強制するために使用される.また、void*ポインタをtypedポインタ、pointer-to-base
をpointer-to-derived
に変換するなど、上述した複数の変換の逆変換を実行するためにも使用することができる.しかし、constをnon-constに変えることはできません.これはconst_cast
でしかできません.