国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

C++開發(fā)EOS基礎(chǔ)指南之類與結(jié)構(gòu)

awkj / 303人閱讀

摘要:上一篇開發(fā)的文章是開發(fā)基礎(chǔ)指南函數(shù)參數(shù)傳遞,是一種面向?qū)ο蟮木幊陶Z言。析構(gòu)函數(shù)是構(gòu)造函數(shù)的附件,允許你在對象被銷毀或超出范圍時運行代碼。默認(rèn)構(gòu)造函數(shù)另一個帶兩個參數(shù)的構(gòu)造函數(shù)成員函數(shù)聲明要遵循的實現(xiàn)不修改對象狀態(tài)的函數(shù)應(yīng)該標(biāo)記為。

上一篇C++開發(fā)EOS的文章是C++開發(fā)EOS基礎(chǔ)指南:函數(shù)參數(shù)傳遞,C++是一種面向?qū)ο蟮木幊陶Z言。它有一個強大的繼承系統(tǒng),私有和公共成員變量,以及通過成員初始化列表在構(gòu)造函數(shù)中初始化它們的好方法。析構(gòu)函數(shù)是構(gòu)造函數(shù)的附件,允許你在對象被銷毀或超出范圍時運行代碼。今天讓我們創(chuàng)建一個簡單的CryptoCurrency類,另外看看繼承。

// @url: https://repl.it/@MrToph/CPPBasics-Classes-1
#include 
#include 
#include 

//自動解析std命名空間,所以我們可以寫字符串而不是std::string
using namespace std;

//聲明一個類。
//類通常在頭文件(.h或.hpp)中聲明。
class Currency
{
    //默認(rèn)情況下,成員變量和函數(shù)是私有的。
    string name;
    double priceInUSD;

    //此后的所有成員都是公共的
????//直到找到“private:”或“protected:”。
  public:
    //默認(rèn)構(gòu)造函數(shù)
    Currency();
    //另一個帶兩個參數(shù)的構(gòu)造函數(shù)
    Currency(const string &_name, const double price);

    //成員函數(shù)聲明(要遵循的實現(xiàn))
    void setName(const string &dogsName);

    void setPrice(double price);

    //不修改對象狀態(tài)的函數(shù)應(yīng)該標(biāo)記為const。
????//如果給定對象的const引用,則允許你調(diào)用它們。
    void print() const;

    //函數(shù)也可以在類體內(nèi)定義。
????//這樣定義的函數(shù)會自動內(nèi)聯(lián)。
    void bark() const { cout << name << " barks!
"; }

    // C++有析構(gòu)函數(shù)。它們是建造者的標(biāo)識當(dāng)一個對象被刪除或超出范圍時調(diào)用它們。
    virtual ~Currency();

}; //分號必須遵循類聲明。

//類成員函數(shù)通常在.cpp文件中實現(xiàn)。
Currency::Currency()
{
    cout << "A currency has been created
";
}

Currency::Currency(const string &_name, double price)
{
    name = _name;
    priceInUSD = price;
    cout << name << " has been created with a price of " << price << "USD
";
}

void Currency::setName(const string ¤cyName)
{
    name = currencyName;
}

void Currency::setPrice(double price)
{
    priceInUSD = price;
}

//請注意,僅在聲明中需要“virtual”,而不是定義。
void Currency::print() const
{
    cout << name << " is at a price of " << priceInUSD << "USD
";
}

Currency::~Currency()
{
    cout << name << " has been hard forked!
";
}

//struct與類相同,但它們通常僅用于封裝數(shù)據(jù)很少包含方法,在這些情況下更喜歡類
struct block_header
{
    //默認(rèn)情況下,結(jié)構(gòu)字段是公共的
    uint64_t timestamp;
    uint64_t blockNumber;
    //指向block_header對象的指針
    block_header* prevBlock;
};

int main()
{
    //這會運行默認(rèn)構(gòu)造函數(shù)
    Currency bitcoin;
    bitcoin.setName("Bitcoin");
    bitcoin.setPrice(1E5);
    bitcoin.print();

    Currency eos("EOS", 100);
    eos.print();

    block_header genesis;
    genesis.timestamp = 1528445288;
    genesis.blockNumber = 0;

    //沒有用戶定義構(gòu)造函數(shù)的結(jié)構(gòu)
????//可以通過“aggregate initialization”初始化
    block_header second{1528445288, 1, &genesis};
    cout << "Timestamp of second block " << second.timestamp << "
";

    //或通過提供struct的字段名稱顯式它們需要與結(jié)構(gòu)中定義的順序相同,但允許你跳過初始化值
    block_header third{.blockNumber = 2, .prevBlock = &second};
    // third.timestamp初始化為0
    cout << "Timestamp of block after block #" << third.prevBlock->blockNumber << ": " << third.timestamp << "
";
}
繼承

如果沒有強制性的Animal類示例,繼承的簡介會是什么?請注意,C++支持多重繼承,這是一種(有爭議的)功能,其中一個類可以同時從多個類繼承。在開發(fā)智能合約時,你可能永遠(yuǎn)不需要它,所以讓我們看一下從單個類繼承的情況。

#include 

using namespace std;

class Animal
{
    string name;
    int weight;

  public:
    //默認(rèn)構(gòu)造函數(shù)將其值“delegates”給其他構(gòu)造函數(shù)
    Animal() : Animal("Peter", 80){};

    //構(gòu)造函數(shù)獲取名稱和權(quán)重并初始化
??? //具有使用相同名稱的“initializer list”的類成員
    Animal(const string &name, int weight) : name(name), weight(weight)
    {
        // we already write the function body here
        cout << name << " was created
";
    };

    void setName(const string &dogsName);
    string getName() const;

    void setWeight(int weight);

    //可以覆蓋的函數(shù)必須聲明為_virtual_
    virtual void print() const;

    //函數(shù)也可以在類聲明中定義
????//但要小心,因為它們會自動內(nèi)聯(lián)。
    void eat() { weight += 5; }

    //如果要派生類,析構(gòu)函數(shù)應(yīng)該是虛擬的;
????//如果它不是虛擬的,那么如果通過基類引用或指針銷毀對象,則不會調(diào)用派生類的析構(gòu)函數(shù)。
    virtual ~Animal();
};

void Animal::setName(const string &animalName)
{
    name = animalName;
}

string Animal::getName() const
{
    return name;
}

void Animal::setWeight(int animalWeight)
{
    weight = animalWeight;
}

//“virtual”僅在聲明中需要,而不是在定義中。
void Animal::print() const
{
    cout << name << " weighs " << weight << "kg
";
}

Animal::~Animal()
{
    cout << "Animal " << name << " died
";
}

// Dog現(xiàn)在是Animal的子類,并繼承了Animal的成員。
//但是如果沒有g(shù)etter,可能無法直接訪問私有成員或方法。
class Dog : public Animal
{
    string breed;

  public:
    Dog(const string &name,int weight,const string &breed):Animal(name,weight),breed(breed)
    {
        cout << "Woof
";
    }

    //被重載的虛擬方法應(yīng)標(biāo)記為重載。
    void print() const override;
};

void Dog::print() const
{
    //調(diào)用Animal的打印功能
    Animal::print();
    //無法直接訪問.name,因為它是私有的
????//需要訪問public getter getName
    cout << Animal::getName() << " is a " << breed << " dog
";
}

int main()
{
    Dog dog("Carl", 10, "Dackel");
    dog.print();
}

分享一個交互式的在線編程實戰(zhàn),EOS智能合約與DApp開發(fā)入門

EOS教程

本課程幫助你快速入門EOS區(qū)塊鏈去中心化應(yīng)用的開發(fā),內(nèi)容涵蓋EOS工具鏈、賬戶與錢包、發(fā)行代幣、智能合約開發(fā)與部署、使用代碼與智能合約交互等核心知識點,最后綜合運用各知識點完成一個便簽DApp的開發(fā)。

這里是原文

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/27509.html

相關(guān)文章

  • C++開發(fā)EOS基礎(chǔ)指南之類結(jié)構(gòu)

    摘要:上一篇開發(fā)的文章是開發(fā)基礎(chǔ)指南函數(shù)參數(shù)傳遞,是一種面向?qū)ο蟮木幊陶Z言。析構(gòu)函數(shù)是構(gòu)造函數(shù)的附件,允許你在對象被銷毀或超出范圍時運行代碼。默認(rèn)構(gòu)造函數(shù)另一個帶兩個參數(shù)的構(gòu)造函數(shù)成員函數(shù)聲明要遵循的實現(xiàn)不修改對象狀態(tài)的函數(shù)應(yīng)該標(biāo)記為。 上一篇C++開發(fā)EOS的文章是C++開發(fā)EOS基礎(chǔ)指南:函數(shù)參數(shù)傳遞,C++是一種面向?qū)ο蟮木幊陶Z言。它有一個強大的繼承系統(tǒng),私有和公共成員變量,以及通過成...

    Atom 評論0 收藏0
  • EOS入門指南PART6——別忙著開發(fā),先來看看智能合約數(shù)據(jù)是怎么存的

    摘要:允許智能合約定義自己的私有數(shù)據(jù)庫表。有了多級索引,智能合約就具備了操作類似數(shù)據(jù)庫模塊的功能。因此雖然只有一列,但是的靈活性絲毫不亞于傳統(tǒng)的數(shù)據(jù)表。 上一章我們學(xué)習(xí)了開發(fā)智能合約之前需要知道的必要概念: 什么是webAssembly以及它在智能合約上下游中的位置; 什么是ABI以及怎樣使用eosiocpp工具產(chǎn)生ABI和wasm、wast hello智能合約的簡單入門:部署和調(diào)用 ...

    ranwu 評論0 收藏0
  • 【許曉笛】EOS 數(shù)據(jù)庫持久化 API —— 實戰(zhàn)

    摘要:查詢數(shù)據(jù)使用方法和其他迭代器操作查詢數(shù)據(jù)。數(shù)據(jù)庫服務(wù)的對象是維修技師和車主。如果查找成功,迭代器就會指向所需的數(shù)據(jù)對象。 EOS 數(shù)據(jù)庫開發(fā)實戰(zhàn) 上次的文章詳細(xì)講解了 EOS 數(shù)據(jù)庫的架構(gòu),本文將以官方示例為基礎(chǔ),詳解 EOS 數(shù)據(jù)庫的開發(fā)實戰(zhàn)。 基本步驟 在智能合約里與 EOS 數(shù)據(jù)庫交互,首先要定義存儲的數(shù)據(jù): 定義對象:具體就是定義一個 C++ 類或者 C++ 結(jié)構(gòu)體,數(shù)據(jù)表...

    yck 評論0 收藏0
  • 區(qū)塊鏈開發(fā)中使用的最流行的編程語言

    摘要:我們目前正處于一個新興的區(qū)塊鏈開發(fā)行業(yè)中。,一種在以太坊開發(fā)人員中流行的新的簡單編程語言,因為它是用于開發(fā)以太坊智能合約的語言。它是全球至少萬開發(fā)人員使用的世界上最流行的編程語言之一。以太坊,主要是針對工程師使用進行區(qū)塊鏈以太坊開發(fā)的詳解。 我們目前正處于一個新興的區(qū)塊鏈開發(fā)行業(yè)中。區(qū)塊鏈技術(shù)處于初期階段,然而這種顛覆性技術(shù)已經(jīng)成功地風(fēng)靡全球,并且最近經(jīng)歷了一場與眾不同的繁榮。由于許多...

    2shou 評論0 收藏0

發(fā)表評論

0條評論

awkj

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<