中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中怎么創建CryptoCurrency類

發布時間:2021-11-30 16:42:36 來源:億速云 閱讀:138 作者:iii 欄目:互聯網科技

本篇內容主要講解“C++中怎么創建CryptoCurrency類”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++中怎么創建CryptoCurrency類”吧!

// @url: https://repl.it/@MrToph/CPPBasics-Classes-1
#include <iostream>
#include <string>
#include <stdlib.h>

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

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

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

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

    void setPrice(double price);

    //不修改對象狀態的函數應該標記為const。
    //如果給定對象的const引用,則允許你調用它們。
    void print() const;

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

    // C++有析構函數。它們是建造者的標識當一個對象被刪除或超出范圍時調用它們。
    virtual ~Currency();

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

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

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

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

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

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

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

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

int main()
{
    //這會運行默認構造函數
    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;

    //沒有用戶定義構造函數的結構
    //可以通過“aggregate initialization”初始化
    block_header second{1528445288, 1, &genesis};
    cout << "Timestamp of second block " << second.timestamp << "\n";

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

繼承

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

#include <iostream>

using namespace std;

class Animal
{
    string name;
    int weight;

  public:
    //默認構造函數將其值“delegates”給其他構造函數
    Animal() : Animal("Peter", 80){};

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

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

    void setWeight(int weight);

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

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

    //如果要派生類,析構函數應該是虛擬的;
    //如果它不是虛擬的,那么如果通過基類引用或指針銷毀對象,則不會調用派生類的析構函數。
    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\n";
}

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

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

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

    //被重載的虛擬方法應標記為重載。
    void print() const override;
};

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

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

到此,相信大家對“C++中怎么創建CryptoCurrency類”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

得荣县| 韩城市| 会同县| 铁岭县| 水富县| 黄龙县| 平湖市| 高碑店市| 洞头县| 拉孜县| 徐闻县| 灵璧县| 安徽省| 锦屏县| 东阳市| 阜康市| 祁门县| 双流县| 屏边| 如东县| 松潘县| 景宁| 塘沽区| 金湖县| 慈溪市| 固安县| 卓尼县| 佛山市| 上蔡县| 霍林郭勒市| 绩溪县| 乐亭县| 墨竹工卡县| 泾阳县| 平潭县| 宁强县| 禹城市| 冀州市| 内黄县| 巴林左旗| 礼泉县|