上一篇C++开发EOS的文章是C++开发EOS基础指南:类与结构,这篇文章我们主要来说说模板Templates。具有静态类型的语言具有很多好处,因为可以通过类型检查在编译时捕获错误。但是,它在编写函数或类时也会引入开销,因为它们需要针对特定类型编写。如果你正在编写库并且不确切知道如何使用库,该怎么办?如果你想支持更多类型,你必须重复编码并重载该函数。看个例子就知道了:
int max(int a, int b) {
return a > b ? a : b;
}
max(5, 3); // 正常工作。
max(5.0, 3.0) // 不起作用,因为它们是_double_s而不是_int_s。
您需要为双精度double定义另一个函数:
double max(double a, double b) {
return a > b ? a : b;
}
正如你所看到的,两种情况下功能体完全相同。重要的是该类型实现了比较运算符>。
对于这些用例,C++提供了类型templates,可以使用泛型类型而不是特定类型。这允许你创建函数或类,其功能可以适用于多种类型或类,而无需重复每种类型的整个代码。
// @url: https://repl.it/@MrToph/CPPBasics-Templates
#include <iostream>
// 使用模板类型T创建"function-template"
// T现在可以用作任何其他类型,如int
template<class T>
T max(T a, T b)
{
return a > b ? a : b;
}
// 创建一个 "class-template",类成员现在可以是模板类型T.
template <class T>
class pair {
T values[2];
public:
pair(T first, T second)
{
values[0]=first;
values[1]=second;
}
T first() const;
T second() const;
};
// 必须再次使用template<class T>语法
template <class T>
T pair<T>::first() const {
return values[0];
}
template <class T>
T pair<T>::second() const {
return values[1];
}
int main()
{
int iMax = max(3, 5);
double dMax = max(3.0, 5.0);
// 类模板实例化是通过在尖括号中传递类型来完成的。
pair<int> p(3, 5);
std::cout << max(p.first(), p.second());
}
后台发生的事情与我们之前手工完成的事情是一样的。作为静态类型,分析代码并且可以解析对模板函数的任何调用的类型。然后,编译器为每个使用的特定类型实例化一个函数。
======================================================================
分享一个交互式的在线编程实战,EOS智能合约与DApp开发入门:
本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发
相关推荐
【C++入门基础_30分钟入门教程】这篇教程旨在为初学者和有一定技术基础的人提供快速理解并深化C++知识的途径。C++是一种广泛应用的编程语言,它结合了过程化编程和面向对象编程,适用于操作系统、设备控制、数据库、...
C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 ...
### C++基础入门教程 #### 1. C++初识 C++是一种广泛使用的面向对象的编程语言,它结合了高效性与强大的功能,适用于多种应用场景,如游戏开发、系统软件编写等。对于初学者来说,掌握C++的基础是非常重要的。 ##...
MFC入门教程:1天深入浅出MFC
《入门教程:易学C++》是一份专为初学者设计的C++编程教程,旨在帮助新接触编程的读者快速掌握C++语言的基础知识。C++是一种强大的、面向对象的编程语言,它在软件开发领域有着广泛的应用,尤其是在系统软件、游戏...
C++是一种功能强大且灵活的编程语言,本文档旨在为读者提供一个基本的C++基础知识入门指南,包括创建项目、编写代码、运行程序、注释、变量、常量、关键字、标识符命名规则和数据类型等方面的知识点。 1. 创建项目...
* 模板:介绍了 C++语言中的模板,包括模板的声明、模板的实例化等。 * 命名空间:介绍了 C++语言中的命名空间,包括命名空间的声明、命名空间的使用等。 * 异常处理:介绍了 C++语言中的异常处理,包括 try 语句、...
Qt之C++开发框架基础入门:探索编程的新世界 亲爱的编程爱好者,你是否渴望在C++的海洋中乘风破浪,却又苦于找不到合适的航标?今天,我们为你带来了一份独特的宝藏——Qt之C++开发框架基础入门Markdown文档。 这...
C++入门基础教程.PDF
《C++项目开发实战入门Code》是一份专为初学者设计的教学资料,旨在帮助学习者通过实际编程项目,快速掌握C++语言的核心概念和编程技巧。这个压缩包中包含了一系列的代码示例和实践项目,涵盖了C++的基础到进阶应用...
Qt是一套应用程序开发类库,但与MFC不同,Qt是跨平台的开发类库。Qt支持PC和服务器的平台,包括Windows、Linux、macOS等,还支持移动和嵌入式操作系统,如iOS、Embedded Linux、Android、WinRT等。跨平台意味着只需...
本文将深入探讨QT5.9C++开发指南中的关键知识点,以及如何与B站阿西拜的QT课程相结合。 1. **Qt库的安装与配置**: 在开始QT5.9的开发之前,你需要在你的系统上安装Qt库。这通常涉及到下载Qt SDK,选择合适的版本...
《Qt5.9 C++开发指南》是一本深入讲解使用Qt 5.9框架进行C++应用程序开发的专业书籍。Qt是一个跨平台的应用程序开发框架,广泛应用于桌面、移动和嵌入式系统。这本书的配套代码提供了丰富的实例,帮助读者更好地理解...
本书以Qt 5.9 LTS版本为开发平台,详细介绍了Qt C++开发应用程序的技术,包括Qt应用程序的基本架构、信号与槽工作机制、图形显示的...本书适合具有C++语言编程基础,希望应用Qt C++开发跨平台应用程序的读者阅读。
在本资源"C++项目开发实战入门 源代码.zip"中,您将获得一份全面的C++编程学习材料,特别适合初学者进行项目实践。这个压缩包包含了一系列的源代码文件,旨在帮助您掌握C++语言的核心概念以及实际应用技巧。 C++是...
C++项目开发实战入门随书配套资料 网盘不一定永久有效,只提供网盘链接
**Qt 5.9 C++ 开发指南:深入理解Qt核心特点与源码解析** Qt是一个流行的开源跨平台应用程序开发框架,广泛应用于桌面、移动和嵌入式系统。Qt 5.9是其一个重要的版本,它在稳定性和性能上都有显著提升,同时也引入...
**Qt5.9 C++开发指南** Qt是一个跨平台的应用程序开发框架,广泛用于创建桌面、移动和嵌入式应用程序。在Qt5.9版本中,它提供了许多增强的功能和改进,使得C++开发者能够更加高效地构建用户界面和应用程序。本指南...
2. **C++与QT5结合**:QT5库如何与C++语言无缝集成,包括类的定义、信号与槽机制、事件处理等,这是开发QT5应用的基础。 3. **QT Widgets**:学习各种预定义的GUI控件,如按钮、文本框、标签、对话框等,以及如何...