我们做一个类似地铁自动售票机的小程序
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.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){ } 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(); ::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