`

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

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的开发

分享到:
评论

相关推荐

    C++入门基础_30分钟入门教程

    【C++入门基础_30分钟入门教程】这篇教程旨在为初学者和有一定技术基础的人提供快速理解并深化C++知识的途径。C++是一种广泛应用的编程语言,它结合了过程化编程和面向对象编程,适用于操作系统、设备控制、数据库、...

    C++入门教程半成品C++入门教程半成品

    C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 C++入门教程半成品 ...

    C++基础入门教程C++基础入门教程C++基础入门教程C++基础入门教程C++基础入门教程.txt

    ### C++基础入门教程 #### 1. C++初识 C++是一种广泛使用的面向对象的编程语言,它结合了高效性与强大的功能,适用于多种应用场景,如游戏开发、系统软件编写等。对于初学者来说,掌握C++的基础是非常重要的。 ##...

    MFC入门教程:1天深入浅出MFC

    MFC入门教程:1天深入浅出MFC

    入门教程:易学c++

    《入门教程:易学C++》是一份专为初学者设计的C++编程教程,旨在帮助新接触编程的读者快速掌握C++语言的基础知识。C++是一种强大的、面向对象的编程语言,它在软件开发领域有着广泛的应用,尤其是在系统软件、游戏...

    C++基础入门.pdf

    C++是一种功能强大且灵活的编程语言,本文档旨在为读者提供一个基本的C++基础知识入门指南,包括创建项目、编写代码、运行程序、注释、变量、常量、关键字、标识符命名规则和数据类型等方面的知识点。 1. 创建项目...

    C++基础教程_完整版 - 副本.pdf

    * 模板:介绍了 C++语言中的模板,包括模板的声明、模板的实例化等。 * 命名空间:介绍了 C++语言中的命名空间,包括命名空间的声明、命名空间的使用等。 * 异常处理:介绍了 C++语言中的异常处理,包括 try 语句、...

    Qt之C++开发框架基础入门-Markdown文档.zip

    Qt之C++开发框架基础入门:探索编程的新世界 亲爱的编程爱好者,你是否渴望在C++的海洋中乘风破浪,却又苦于找不到合适的航标?今天,我们为你带来了一份独特的宝藏——Qt之C++开发框架基础入门Markdown文档。 这...

    C++入门基础教程.PDF

    C++入门基础教程.PDF

    C++项目开发实战入门Code.7z

    《C++项目开发实战入门Code》是一份专为初学者设计的教学资料,旨在帮助学习者通过实际编程项目,快速掌握C++语言的核心概念和编程技巧。这个压缩包中包含了一系列的代码示例和实践项目,涵盖了C++的基础到进阶应用...

    Qt 5.9 C++开发指南

    Qt是一套应用程序开发类库,但与MFC不同,Qt是跨平台的开发类库。Qt支持PC和服务器的平台,包括Windows、Linux、macOS等,还支持移动和嵌入式操作系统,如iOS、Embedded Linux、Android、WinRT等。跨平台意味着只需...

    《QT5.9C++开发指南》源码

    本文将深入探讨QT5.9C++开发指南中的关键知识点,以及如何与B站阿西拜的QT课程相结合。 1. **Qt库的安装与配置**: 在开始QT5.9的开发之前,你需要在你的系统上安装Qt库。这通常涉及到下载Qt SDK,选择合适的版本...

    qt5.9c++开发指南.zip

    《Qt5.9 C++开发指南》是一本深入讲解使用Qt 5.9框架进行C++应用程序开发的专业书籍。Qt是一个跨平台的应用程序开发框架,广泛应用于桌面、移动和嵌入式系统。这本书的配套代码提供了丰富的实例,帮助读者更好地理解...

    Qt5.9C++开发指南 源码 资源.zip

    本书以Qt 5.9 LTS版本为开发平台,详细介绍了Qt C++开发应用程序的技术,包括Qt应用程序的基本架构、信号与槽工作机制、图形显示的...本书适合具有C++语言编程基础,希望应用Qt C++开发跨平台应用程序的读者阅读。

    C++项目开发实战入门 源代码.zip

    在本资源"C++项目开发实战入门 源代码.zip"中,您将获得一份全面的C++编程学习材料,特别适合初学者进行项目实践。这个压缩包包含了一系列的源代码文件,旨在帮助您掌握C++语言的核心概念以及实际应用技巧。 C++是...

    C++项目开发实战入门资料

    C++项目开发实战入门随书配套资料 网盘不一定永久有效,只提供网盘链接

    Qt 5.9 C++开发指南-Qt核心特点源码

    **Qt 5.9 C++ 开发指南:深入理解Qt核心特点与源码解析** Qt是一个流行的开源跨平台应用程序开发框架,广泛应用于桌面、移动和嵌入式系统。Qt 5.9是其一个重要的版本,它在稳定性和性能上都有显著提升,同时也引入...

    Qt5.9 C++开发指南.pdf 及示例源码

    **Qt5.9 C++开发指南** Qt是一个跨平台的应用程序开发框架,广泛用于创建桌面、移动和嵌入式应用程序。在Qt5.9版本中,它提供了许多增强的功能和改进,使得C++开发者能够更加高效地构建用户界面和应用程序。本指南...

    C++ QT5教程 开发大全和教程 完整

    2. **C++与QT5结合**:QT5库如何与C++语言无缝集成,包括类的定义、信号与槽机制、事件处理等,这是开发QT5应用的基础。 3. **QT Widgets**:学习各种预定义的GUI控件,如按钮、文本框、标签、对话框等,以及如何...

Global site tag (gtag.js) - Google Analytics