c++ - 如果函数是在类的主体内定义的,是否需要在成员函数的返回类型中指定 typename?
问题描述
考虑下面的例子:
template <typename T>
class SomeClass {
// rest of the definition ...
SomeClass<T>& function1() {
// ...
return *this;
}
SomeClass& function2() {
// ...
return *this;
}
}
上面两个函数的返回值有区别吗?如果不是,应该首选哪一个?
解决方案
function1
和之间没有区别function2
。在定义SomeClass
中没有模板参数的SomeClass
类型是使用注入类名的一个实例:
注入的类名是所述类范围内的类的名称。
在类模板中,注入的类名既可以用作引用当前模板的模板名,也可以用作引用当前实例化的类名。
是否使用其中一个是主观的,但是注入的类名更易于维护,因为如果您更改SomeClass
.
推荐阅读
- c++ - 如何将整行从向量向量复制到另一个向量向量?
- rpa - ImageFound 活动因远程桌面最小化而失败
- c# - 打开 DeterministicSourcePaths 获取源文件位置
- php - 如何创建具有变体的产品?
- git - 使用 sourcetree 推送到不同的远程分支
- kubernetes - 在 Kubernetes pod 中创建文件
- unity3d - 将两个动画组合在一起
- python-2.7 - 将 .mdb 文件导入 Python
- docker - docker误恢复出厂设置
- javascript - 如果用户从组件的 url 导航到相同的 URL 但查询不同,如何强制路由重新呈现其组件