2016-09-29 75 views
1

返回級裁判:從給定一個類模板類模板函數

template <typename T> 
class my_class 
{ 
public: 
    my_class& test1() { return *this; } 
    // OR 
    my_class<T>& test2() { return *this; } 
} 

是否有返回類型的test1test2之間有什麼區別?

+3

沒有,沒有任何區別 – wasthishelpful

+3

號(土豆) –

回答

7

返回類型test1test2之間是否有區別?

沒有。有一個概念叫做injected-class-name。在my_class<T>的正文中,名稱my_class指的是完整類型my_class<T>

我們甚至可以藉此得出的邏輯結論,並添加:

my_class::my_class::my_class::my_class& test4() { return *this; } 
+3

需要更多的'my_class'。 –

+1

注入的類名在C++ 03和C++ 11中的行爲不同,你可以添加嗎? – Trevir

+1

@Trevir我不知道C++ 11的變化。 – Barry

2

否,範圍my_class<T>my_classmy_class<T>的縮寫。