2016-09-29 135 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>的缩写。