1)C ++型変換は、暗黙的な変換と明示的な変換の2つの型に分けられます。
2)C ++は変換を使用しないようにし、暗黙的な変換の代わりに明示的な変換を使用するようにしてください。
1暗黙の変換
定義:暗黙的な変換は、プログラムのニーズに応じてシステムによって自動的に変換されます。
1)C ++タイプ(char、int、float、long、doubleなど)の暗黙的な変換:
算術式の暗黙的な変換の順序は次のとおりです。
1、char-int-long-double
2、float-double
// 1)算術式 int m = 10; double n = m; // n = 10.0;暗黙的にmをdouble型に変換 intm = 10; float f = 10.0; double d = m + f; // n = 20.0 ; mとfを暗黙的にdouble型に変換します // 2) int * p = NULLを割り当てます; // NULL(0)は暗黙的にint型のnullポインタ値に変換されます* // 3)関数は float add(float f)に入ります; add(2); // 2浮動小数点型への暗黙的な変換 // 4)関数の戻り値 doubleマイナス(int a、int b) { return a-b; //戻り値のdouble型への暗黙的な変換 }
2)C ++クラスオブジェクトの暗黙的な変換:
void fun(CTest test); class CTest { public: CTest(int m = 0); } fun(20); //暗黙の変換
2明示的な変換
定義:明示的な変換は強制とも呼ばれ、独自のイニシアチブでこのタイプを別のタイプに変換します。
1)C ++タイプ(char、int、float、long、doubleなど)の明示的な変換:
int m = 5; char c =(char)m; // mをchar型に明示的に変換doubled = 2.0; int i = 1; i + = static_cast <int>( d); // dを明示的にintに変換タイプ
2)C ++クラスオブジェクトの明示的な変換:クラスコンストラクターにパラメーターが1つしかない場合、または最初のパラメーターを除くすべてのパラメーターにデフォルト値がある場合、このクラスには暗黙的な型変換演算子(暗黙的な変換)がありますが、暗黙的な変換が必要ない場合があります、コンストラクターの前に明示的なキーワードを追加して、明示的な呼び出しを指定できます。
void fun(CTest test); class CTest { public: explicit CTest(int m = 0); } fun(20); //エラー暗黙的変換 fun(static_cast <CTest>(20)); // ok明示的変換