如果函数定义在 class 函数体内,我是否需要在 return 类型的成员函数中指定类型名称?
Do I need to specify typename in the return type of member function if the function is defined inside the body of the class?
考虑下面的例子:
template <typename T>
class SomeClass {
// rest of the definition ...
SomeClass<T>& function1() {
// ...
return *this;
}
SomeClass& function2() {
// ...
return *this;
}
}
以上两个函数的return值有区别吗?如果不是,应该首选哪一个?
function1
和function2
没有区别。在 SomeClass
的定义中键入不带模板参数的 SomeClass
是使用 injected-class-name:
的一个实例
The injected-class-name is the name of a class within the scope of said class.
In a class template, the injected-class-name can be used either as a template name that refers to the current template, or as a class name that refers to the current instantiation.
是否使用一个而不是另一个是主观的,但是注入的 class 名称更易于维护,因为如果您更改 [=12] 的模板参数的数量,则不必手动更改它=].
考虑下面的例子:
template <typename T>
class SomeClass {
// rest of the definition ...
SomeClass<T>& function1() {
// ...
return *this;
}
SomeClass& function2() {
// ...
return *this;
}
}
以上两个函数的return值有区别吗?如果不是,应该首选哪一个?
function1
和function2
没有区别。在 SomeClass
的定义中键入不带模板参数的 SomeClass
是使用 injected-class-name:
The injected-class-name is the name of a class within the scope of said class.
In a class template, the injected-class-name can be used either as a template name that refers to the current template, or as a class name that refers to the current instantiation.
是否使用一个而不是另一个是主观的,但是注入的 class 名称更易于维护,因为如果您更改 [=12] 的模板参数的数量,则不必手动更改它=].