首页  >  文章  >  后端开发  >  `Link* next` 是否使用 C 模板中注入的类名?

`Link* next` 是否使用 C 模板中注入的类名?

DDD
DDD原创
2024-11-02 22:18:30748浏览

Does `Link* next` Use the Injected Class Name in C   Templates?

在没有模板参数的类模板中使用类名

考虑 C 书中的以下代码:

<code class="cpp">template <typename E> class Link {
    ...
    Link* next;  // this line may be confusing
    ...
};</code>

在此代码中,声明成员 next 时未指定模板参数 E,引发了对其正确性的担忧。接下来不应该是 Link* 吗?

解释

这是通过“注入类名”的概念来解释的。根据 C 标准 [temp.local],当在没有模板参数的情况下使用时,类模板中的类名称相当于类名称后跟尖括号中包含的模板参数。因此,在这种情况下,Link* 相当于 Link*。

这条规则是为了方便起见,确保类中的类名引用类本身,而不是带有同名。对于类模板,它提供了速记符号,特别是在处理扩展模板参数列表时。

以上是`Link* next` 是否使用 C 模板中注入的类名?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn