C++開發EOS基礎指南:模版
上一篇C++開發EOS的文章是ofollow,noindex" target="_blank">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工具鏈、賬戶與錢包、發行代幣、智慧合約開發與部署、使用程式碼與智慧合約互動等核心知識點,最後綜合運用各知識點完成一個便籤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的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和交易等。
匯智網原創翻譯,轉載請標明出處。這裡是原文