如果函数是在类的主体中定义的,我是否需要在成员函数的返回类型中指定 typename?

Do I need to specify typename in the return type of member function if the function is defined inside the body of the class?

本文关键字:函数 返回类型 成员 typename 主体 定义 如果 是否      更新时间:2023-10-16

考虑下面的例子:

template <typename T>
class SomeClass {
// rest of the definition ...
SomeClass<T>& function1() {
// ...
return *this;
}
SomeClass& function2() {
// ...
return *this;
}
}

上述两个函数的返回值之间有区别吗?如果没有,应该首选哪一个?

function1function2之间没有区别。在SomeClass的定义中键入不带模板参数的SomeClass是使用注入类名的一个实例:

注入的类名是该类范围内类的名称。

在类模板中,注入的类名既可以用作引用当前模板的模板名称,也可以用作引用当前实例化的类名。

是否使用一个而不是另一个是主观的,但注入的类名更易于维护,因为如果您更改SomeClass的模板参数数量,则不必手动更改它。