2010-12-21 10 views
0

可能性の重複:
C++: What's the difference between function(myVar) and (function)myVar ?int(floatvar)と(int)floatvarの違いはありますか?

私が見たとこれらの型キャストの両方のバリアントを使用しています

int(floatvar) 

(int)floatvar 

は2の間に違いはありますか?どのようなものをいつ使用するかについての好みはありますか?

+0

これはC++の問題であるため、Cタグを削除しました。 "floatvar"というパラメータで "int"という名前の関数を呼び出さない限り、最初の変種はCでは関係ありませんか? – onemasse

答えて

9

違いはありません。 (int)floatvarは、int(floatvar)がC++の方法であるキャストを行うCの方法です(明示してstatic_cast<>を使用する方が良いですが)。

+1

なぜそれが紹介されたのかを読者に知らせるのも面白いかもしれません。 –

3

いいえ、それは同じことです。

とにかく、C++キャストの場合static_castが好ましいです。

1

表記法はどのタイプのものでも一般的なものですが、intを使ってそれを行うことができるということは、テンプレートで機能することを意味します。

template < typename T, typename U > 
T makeTFromU(U u) 
{ 
    return T(u); 
} 

[OK]を、それがポイントを表示するための非常に単純なケースであるが、Tがintであり、Uはintに変換することができるタイプであってもそれが動作します。

標準ライブラリの例はベクトルです。このコンストラクタを使用すると、パラメータから1つの要素を作成し、最初からコピーコンストラクタによって他の要素を構築します。

std::vector<int> v(20, x); 

したがって、内部でint(x)を呼び出して最初のものを作成し、20個の要素にコピーします。

関連する問題