2011-12-19 116 views
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是一種原始類型。

+3

你是什麼意思「哪一個更好?」 – 2011-12-19 21:13:13

回答

4

如果T只能是原始類型(int,float等),我不認爲有任何區別;在所有情況下,編譯器都會執行相關的轉換(並且可能會在編譯時執行替換)。

如果T是一個用戶定義的類型,那麼顯然這些將不會編譯,除非它具有相應的構造函數定義。在這一點上,它可能會有所不同(例如,如果您同時定義了T::T(int)T::T(double))。