自动售票机

我们做一个类似地铁自动售票机的小程序

main.cpp

1
2
3
4
5
6
7
8
#include "TicketMachine.hpp"

int main() {
TicketMachine tm;
tm.insertMoney(100);
tm.showBalance();
return 0;
}

TicketMachine.hpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef TicketMachine_hpp//如果没有定义这个宏
#define TicketMachine_hpp//那就定义这个宏

class TicketMachine{
public:
TicketMachine();
virtual ~TicketMachine();
void showPrompt();
void insertMoney(int money);
void showBalance();
void printTicket();
void showTotal();
private:
const int PRICE;
int balance;
int total;
};

#endif /* TicketMachine_hpp */

TicketMachine.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "TicketMachine.hpp"
#include <iostream>
using namespace std;

//构造函数
TicketMachine::TicketMachine() : PRICE(0){//初始化
//TODO:
}
TicketMachine::~TicketMachine(){//析构函数

}

void TicketMachine::showPrompt()
{
cout<<"something";
}

void TicketMachine::insertMoney(int money)
{
balance +=money;
}

void TicketMachine::showBalance()
{
cout<<balance;
}

::resolver

也就是 解析符

:: 这表示这个函数不是自由的,而是羁绊于 Class Name这个类的。

1
2
3
4
5
void S::f() {//代表f()这个函数属于s
::f();//递归调用自己
::a++;//代表全局变量
a--;//代表这个函数里的变量
}

定义类(Definition of a class)

  • 在c++中,.h和.cpp文件被用来定义一个类
  • 类的定义和函数原型放在.h中(declarations)
  • 累的bodies放在.cpp中(definitions)

Declarations vs.Definitions

  • 一个.cpp文件就是一个编译单元
  • 只有声明(declarations)被允许在.h文件中
    • exterm variables
    • function prototypes(函数原型)
    • class/struct declaration