第11章 使用类4
第11章 使用类4
第5题
重新编写Stonewt类(程序清单11.16和程序清单11.17),使它有一个状态成员,由该成员控制对象应转换为英石格式,整数磅格式还是浮点磅格式。 重载<<运算符, 使用它来替换show_stn()和show_lbs()方法。重载加法、减法和乘法运算符,以便可以对Stonewt值进行加、减、乘运算, 编写一个使用所有类方法和友元的小程序, 来测试这个类。
Stonewt.h头文件
#ifndef STONEWT_H_
#define STONEWT_H_
#include <iostream>
class Stonewt
{
public:
enum Style{STONE, POUNDS, FLOATPOUNDS};
private:
enum {Lbs_per_stn = 14}; // 1英石等于14磅
int stone;
double pds_left; // double类型的磅值
double pounds;
Style style;
public:
Stonewt(double lbs);
Stonewt(int stn, double lbs); // 针对int类型的英石值和double类型的磅值的构造函数
Stonewt(); // 默认构造函数
~Stonewt();
void set_style(Style m);
Stonewt operator+(const Stonewt &s) const;
Stonewt operator-(const Stonewt &s) const;
Stonewt operator*(double n) const;
friend std::ostream & operator<<(std::ostream & os, const Stonewt &s);
};
#endif
源文件