2
template <class T>
void MyClass<T>::MyMethod()
{
    // ...

    // Which of the following initialization is better?
    T MyVariable1 = 1;                  // 1st
    T MyVariable2 = 2.0;                // 2nd
    T MyVariable3 = static_cast<T>(3);  // 3rd

    // ...
}

どちらの方がよいですか?

編集:Tプリミティブ型です。

4

1 に答える 1

4

Tプリミティブ型 ( 、 など) しかできないint場合、float違いはないと思います。いずれの場合も、コンパイラは関連する変換を実行します (おそらくコンパイル時に置換を実行します)。

ユーザー定義型の場合T、適切なコンストラクターが定義されていない限り、これらは明らかにコンパイルされません。その時点で、違いが生じる可能性があります (たとえば、 と の両方がT::T(int)定義T::T(double)されている場合)。

于 2011-12-19T21:12:42.070 に答える