一、问题引入
区分面向过程编程和面向对象编程的最大的特性就是 类,类是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。
那么如何声明类、定义类、调用类?
以 C++ Primer Plus:中文版 (第六版) 的股票类举例说明。
二、解决过程
2-1 类抽象
股票类的抽象化
- 获得股票
- 增持股票
- 卖出股票
- 更新股票价格
- 显示所持股票的信息
股票的数据类型抽象化
- 发行股票公司名称
- 所持股票的数量
- 股票的单价
- 股票总值
2-2 类的代码实现
1️⃣ stock.h- #ifndef __STOCK_H__
- #define __STOCK_H__
- #include <string>
- // 类的声明
- class Stock {
- public:
- Stock(); // default constructor
- Stock(const std::string & co, long n = 0, double pr = 0.0); // constructor prototype with some default arguments
- ~Stock(); // noisy destructor
- void get_stock(const std::string & co, long n, double pr); // 获得股票
- void add_stock(long num, double price); // 增持股票
- void sell_stock(long num, double price); // 卖出股票
- void update_price(double price); // 更新股票价格
- void show(); // 显示所持股票的信息
- private:
- std::string company; // 发行股票公司名称
- long shares; // 所持股票的数量
- double share_val; // 股票的单价
- double total_val; // 股票总值
- void set_total() {total_val = shares * share_val;};
- };
- #endif
复制代码 2️⃣ stock.cpp
[code]#include "stock.h"#include // default constructorStock::Stock(){}// class destructorStock::~Stock() // verbose class destructor{}// 构造函数的参数表示的不是类成员,而是赋给类成员的值。因此,参数名不能与类成员相同,否则出现同名混乱Stock::Stock(const std::string & co, long n, double pr) { company = co; if(n < 0) { std::cerr |