#include<iostream>
using namespace std;
enum signType{plus,minus};
class currency{
public:
currency (signType theSign= signType::plus,unsigned long theDollars=0,unsigned int theCents = 0); //构造函数 外部定义 诺省初始值--> 则按此默认给
~currency(){};//析构函数 为空
void setValue(signType,unsigned long,unsigned int ); //原型 定义在class 外部
currency add(const currency&) const; //此const表示 不改变参数的内容
void output() const;
private : //只能通过成员函数访问 不能对象私自 访问
signType sign;
unsigned long dollars;
unsigned int cents;
}; //最后也要加分号
currency::currency (signType theSign,unsigned long theDollars,unsigned int theCents){
setValue(theSign,theDollars,theCents);
}
void currency::setValue(signType Sign,unsigned long Dollars,unsigned Cents){ // 如显示初始化对象 ,则调用此 64row
//给调用对象 的成员赋值
if(Cents >99){
throw "Max of Cents";
}
sign = Sign; //没用 . 就代表 访问 调用对象的成员
dollars = Dollars;
cents = Cents;
}
currency currency::add(const currency & x) const{
currency result;
long a1,a2,a3;
a1=dollars*100 + cents; //a1 调用对象的 转换为数字值
if(sign ==signType:: minus)
a1 = -a1;
a2 = x.dollars*100 +x.cents; // a2 代表形参传进来的对象
if(x.sign == signType:: minus)
a2= -a2;
a3= a1+a2;
if(a3<0){
result.sign =signType:: minus;
a3 = -a3;
}
else result.sign = signType::plus;
result.dollars = a3/100;
result.cents = a3-result.dollars*100;
return result;
}
void currency::output() const{
if(sign == signType::minus)
cout<<'-';
cout<< dollars
<< '.'
<< cents;
}
int main(){
currency a(signType::plus,3,22),b(signType ::minus,2,22);
a =a.add(b);
a.output();
return 0;
}
|