C++开发EOS基础指南(入门教程):模版_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > C++开发EOS基础指南(入门教程):模版

C++开发EOS基础指南(入门教程):模版

 2018/10/26 15:18:55  it_node  程序员俱乐部  我要评论(0)
  • 摘要:上一篇C++开发EOS的文章是C++开发EOS基础指南:类与结构,这篇文章我们主要来说说模板Templates。具有静态类型的语言具有很多好处,因为可以通过类型检查在编译时捕获错误。但是,它在编写函数或类时也会引入开销,因为它们需要针对特定类型编写。如果你正在编写库并且不确切知道如何使用库,该怎么办?如果你想支持更多类型,你必须重复编码并重载该函数。看个例子就知道了:intmax(inta,intb){returna>b?a:b;}max(5,3);//正常工作。max(5.0,3.0
  • 标签:c++ 开发 教程

上一篇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区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发

发表评论
用户名: 匿名