C++開發EOS基礎指南:模版

上一篇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的以太坊應用,包括帳戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。

匯智網原創翻譯,轉載請標明出處。這裏是原文編程

相關文章
相關標籤/搜索