上一篇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的开发
相关推荐
Visual C++ 2010开发权威指南—作者:尹成 , 颜成钢 文件较大,故只提供下载地址,内含《Visual C++ 2010开发权威指南》(书籍)、代码、以及视频讲解!(版权所有,请勿翻录!)
C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 ...
c++入门教程c++入门教程c++入门教程c++入门教程c++入门教程c++入门教程c++入门教程
C++入门基础_30分钟入门教程 C++入门基础_30分钟入门教程
MFC入门教程:1天深入浅出MFC
听到题目有些夸张,不过这确实是一个不错的资源,比较基础并深入的讲解了C++方面的知识,30分钟知识想告诉你让你在一个短的时间内让你的知识有一定的提升。不管你是初学者还是有一定知识的技术人员,这都会帮助你...
c++入门教程,深入浅出的学习C++,较适用于初学者,老鸟请忽略
C++基础入门.pdf
本书是为C++程序设计学习者量身订做的辅导书。全书分为3篇。第一篇介绍了面向过程...本书的内容涵盖了绝大部分常用的C++知识,可以作为大学计算机专业或非计算机专业的程序设计入门教材,也可供计算机爱好者自学使用。
C++项目开发实战入门Code.7z
C++开发.c++ 开发必备 机 入门高级教程
C++项目开发实战入门随书配套资料 网盘不一定永久有效,只提供网盘链接
C++开发.c++ 开发必备 机 入门高级教程
C++开发.c++ 开发必备 机 入门高级教程
Qt是一套应用程序开发类库,但与MFC不同,Qt是跨平台的开发类库。Qt支持PC和服务器的平台,包括Windows、Linux、macOS等,还支持移动和嵌入式操作系统,如iOS、Embedded Linux、Android、WinRT等。跨平台意味着只需...
《QT5.9C++开发指南》的源码,可以对应B站阿西拜的QT课程代码,适当修改以下不收取积分
Qt5.9 C++开发指南.pdf 及示例源码
linux c++开发基础,入门级教程,适于初学者了解学习