C++开发EOS基础指南:模版

栏目: C++ · 发布时间: 6年前

内容简介:上一篇C++开发EOS的文章是您需要为双精度正如你所看到的,两种情况下功能体完全相同。重要的是该类型实现了比较运算符

上一篇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的开发。

  • 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的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。

汇智网原创翻译,转载请标明出处。这里是 原文


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

以匠心,致设计:网易 UEDC 用户体验设计

以匠心,致设计:网易 UEDC 用户体验设计

网易用户体验设计中心 / 电子工业出版社 / 2018-8 / 95.00元

为什么网易云音乐的体验流畅细腻、富有温度?为什么网易严选App的UI设计让人感到温馨、舒适?为什么网易蜗牛读书App的界面设计让用户爱不释手…… 《以匠心,致设计:网易 UEDC 用户体验设计》是网易用户体验设计团队对自身过去的设计思考的精心总结,最大程度还原了网易产品背后的设计故事,内容涵盖设计基础、设计实践、方法思考、成长指南四章,借助网易产品设计的实际案例具体讲述了设计师日常工作中不可......一起来看看 《以匠心,致设计:网易 UEDC 用户体验设计》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具