gpt4 book ai didi

c++ - 类模板和模板类

转载 作者:太空狗 更新时间:2023-10-29 19:39:00 26 4
gpt4 key购买 nike

类模板和模板类之间有区别吗?如果有,那是什么?

最佳答案

当使用这两个术语时,会有非常细微的差别。它更像是语言而不是语义,这取决于您要修改的是哪个词。

简而言之,类模板 是一种特殊的模板。模板可以定义类或函数。类模板是定义类的模板。查看区别:

template <typename T> class SomeClass {...};      // this is a class template
template <typename T> int some_function(T&) {...} // this is a function template

模板类 是一种特殊的类。类有很多种,特别是模板类是使用类模板定义的类。对比度:

SomeClass sc;         // SomeClass is an ordinary (non-template) class
SomeClass<int> sc; // SomeClass<int> is a template class

来自 Stroustrup's C++ Glossary :

template class - class parameterized by types, values, or templates. The template arguments necessary to identify the class to be generated for the class template must be provided where a template class is used. For example "vector<int> v;" generates a vector of ints from the vector template. See also template. TC++PL 13.2, D&E 15.3.

Stroustrup 的书 The C++ Programming Language 和 1998 年之前的 ISO/IEC C++ 标准都使用了这两个表达式。

注意: 正如下面评论中所讨论的,C++03 似乎不再使用术语“模板类”(尽管我没有它的拷贝),大概是为了减少困惑。正如我之前所说,它们本质上是相同的,只是语言上的差异:在模板上下文中,您指的是一种特定类型的模板,或者在类上下文中,您指的是一种特定类型的类。如果你只是坚持“类模板”,你不会失去任何东西。

更多深思:

关于c++ - 类模板和模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2983146/

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