本文主要讲解“如何在C语言中创建CryptoCurrency类”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习“如何用C语言创建加密货币类”!
//@url:https://repl.it/@MrToph/CPPBasics-Classes-1
#包括牡蛎
#包括
# includestdlib.h
//自动解析std命名空间,所以我们可以写字符串而不是std:string。
使用命名空间TD;
//声明一个类。
//类通常在头文件中声明(。h或。hpp)。
分类货币
{
//默认情况下,成员变量和函数是私有的。
stringname
doublepriceInUSD
//从现在开始,所有成员都是公开的。
//直到找到“private:”或“protected:”为止。
公众号:
//默认构造函数
货币();
//另一个具有两个参数的构造函数
币种(conststring_name,const double price);
//成员函数声明(后续实现)
void setname(conststringdogsName);
无效设置价格(双倍价格);
//不修改对象状态的函数应标记为常量。
//如果给定了对象的常量引用,则允许调用它们。
voidprint()常量;
//函数也可以在类体中定义。
//以这种方式定义的函数将自动内联。
voidbark()const{coutname'barks!\ n ';}
//C有一个析构函数。它们是建造者的身份证明。当对象被删除或超出范围时调用它们。
虚~币();
};//分号必须跟在类声明之后。
//类成员函数通常在中实现。cpp文件。
货币:货币()
{
cout 'Acurrencyhasbeencreated \ n
}
currency : currency(const string _ name,doubleprice)
{
name=_ name
priceInUSD=价格;
coutname '已被创建为price of ' price ' USD ' \ n;
}
空隙货币:3360 set name(常量货币货币名称)
{
name=currencyName
}
无效货币voidCurrency:setPrice(双倍
bsp;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类”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/127470.html