具有和不具有模板的功能相同
Same function with and without template
本文关键字:功能 更新时间:2023-10-16
我正在尝试理解C++11的一段代码。
一个类包含2个函数,如下所示:
class abc
{
public:
void integerA(int x);
template<typename typ>
void integerA(typ x);
};
我无法理解声明两个相同函数的好处。为什么不只声明一个模板函数?
我只能假设一个好处是,我们知道可以传递给该函数的int
数据类型。这可能会快一点。但为此,我们真的需要创建一个具有int
数据类型的单独函数吗?
这样做的主要原因是专门化void integerA(int x)
来做其他事情。也就是说,如果程序员向成员函数abc::integerA
提供int
作为输入参数,那么由于C++规则而不是实例化模板成员函数,编译器将选择void integerA(int x)
,因为在可能的情况下,优选具体函数,而不是实例化模板版本。
一种更直接的方法是以以下方式专门化模板成员函数:
class abc
{
public:
template<typename typ>
void integerA(typ x);
};
template<typename typ>
void abc::integerA(typ x) {
...
}
template<>
void abc::integerA(int x) {
...
}
现场演示
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- QML按钮点击功能执行顺序
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 有没有可能有一个只有ADL才能找到的非好友功能
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 文件系统:复制功能的速度秘诀是什么
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 对可变参数使用声明.如何选择正确的功能
- 询问在设计我的手臂模拟器功能表示格式1
- 功能原型的目的
- 这里在 Linux 中具有"CreatePipe"和"CreateProcessW"功能吗?