上一篇C++开发EOS的文章是C++开发EOS基础指南:类与结构,这篇文章咱们主要来讲说模板Templates
。具备静态类型的语言具备不少好处,由于能够经过类型检查在编译时捕获错误。可是,它在编写函数或类时也会引入开销,由于它们须要针对特定类型编写。若是你正在编写库而且不确切知道如何使用库,该怎么办?若是你想支持更多类型,你必须重复编码并重载该函数。看个例子就知道了:php
int max(int a, int b) { return a > b ? a : b; } max(5, 3); // 正常工做。 max(5.0, 3.0) // 不起做用,由于它们是_double_s而不是_int_s。
您须要为双精度double
定义另外一个函数:java
double max(double a, double b) { return a > b ? a : b; }
正如你所看到的,两种状况下功能体彻底相同。重要的是该类型实现了比较运算符>
。node
对于这些用例,C++提供了类型templates
,可使用泛型类型而不是特定类型。这容许你建立函数或类,其功能能够适用于多种类型或类,而无需重复每种类型的整个代码。python
// @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()); }
后台发生的事情与咱们以前手工完成的事情是同样的。做为静态类型,分析代码而且能够解析对模板函数的任何调用的类型。而后,编译器为每一个使用的特定类型实例化一个函数。android
======================================================================ios
分享一个交互式的在线编程实战,EOS智能合约与DApp开发入门:程序员
EOS教程web
本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、帐户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。mongodb
- java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如建立地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
- java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
- php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如建立地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
- php以太坊,主要是介绍使用php进行智能合约开发交互,进行帐号建立、交易、转帐、代币开发以及过滤器和交易等内容。
- 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
- 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
- python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
- C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括帐户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
汇智网原创翻译,转载请标明出处。这里是原文编程