gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:37:23 25 4
gpt4 key购买 nike

考虑下面的例子:

template <typename T>
class SomeClass {
// rest of the definition ...

SomeClass<T>& function1() {
// ...
return *this;
}

SomeClass& function2() {
// ...
return *this;
}

}

上面两个函数的返回值有区别吗?如果不是,应该首选哪一个?

最佳答案

function1function2 之间没有区别。在 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.

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

关于c++ - 如果函数是在类体内定义的,我是否需要在成员函数的返回类型中指定 typename ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58502018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com