本例子着重演示:类的自动转换和强制类型转换。
接收一个参数的构造函数将作为转换函数,即:可以转换普通的数据类型为对象类型
Stonewt incognito = 275 (这个就是转换275为Stonewt对象)
还可以将类对象转换为普通的数据类型,这需要借助转换函数来进行。
转换函数就是opertor typename() 例如:operator double() 这就是个转换函数,它是类的方法。
注:应该谨慎地使用隐士转换函数,最好是选择仅仅能显示调用的时候才会执行的函数。
因此这个玩意,大家看看就好了,最好是不要用啊。
本程序有三个文件。
#pragma once
#ifndef STONEWT_H_
#define STONEWT_H_
class Stonewt
{
public:
Stonewt(double lbs);//构造器,使用double 磅
Stonewt(int stn, double lbs);//构造器,使用英石和磅
Stonewt();//默认构造器
~Stonewt();
void show_lbs() const;//以磅的格式来显示重量
void show_stn() const;//以英石和磅的方式来显示重量
//转换函数
operator int() const;
operator double() const;
private:
enum {Lbs_per_stone=14};//一英石=14磅
int stone; //完整的英石
double pds_left; //零碎的磅
double pounds; //完全以磅为单位来计算重量
};
#endif