運行結果:
Enter the first money (dollars): 12.123
Invalid dollars and cents, negative values
Enter the first money (dollars): 33.99
Enter the second money (dollars): 35.33
The sum is: $69.32
AltMoney.h
#ifndef __frendFuciton__AltMoney__
#define __frendFuciton__AltMoney__
class AltMoney {
private:
int dollars;
int cents;
public:
AltMoney();
AltMoney(int dollars, int cents);
AltMoney operator+(const AltMoney& m);
void show();
};
#endif
AltMoney.cpp
#include "AltMoney.h"
#include <iostream>
AltMoney::AltMoney() {
dollars = cents = 0;
}
AltMoney::AltMoney(int dollars, int cents) {
this->dollars = dollars;
this->cents = cents;
}
AltMoney AltMoney::operator+(const AltMoney& m) {
const int CENTS_PER_DOLLAR = 100;
AltMoney sum;
sum.cents = cents + m.cents;
int count = sum.cents / CENTS_PER_DOLLAR;
sum.cents %= CENTS_PER_DOLLAR;
sum.dollars = dollars + m.dollars + count;
return sum;
}
void AltMoney::show() {
std::cout << "The sum is: " << "$" << dollars << "." << cents;
}
operateOverFlow.cpp
#include "AltMoney.h"
#include <iostream>
#include <cstdlib>
void readMoney(int& dollars, int& cents);
int main() {
using std::cout;
using std::cin;
AltMoney sum;
int dollars, cents;
cout << "Enter the first money (dollars): ";
readMoney(dollars, cents);
AltMoney m1(dollars, cents);
cout << "Enter the second money (dollars): ";
readMoney(dollars, cents);
AltMoney m2(dollars, cents);
sum = m1 + m2;
sum.show();
return 0;
}
void readMoney(int& dollars, int& cents) {
using std::cout;
using std::cin;
cin >> dollars;
cin.get();
cin >> cents;
if (dollars < 0 || cents < 0 || cents >=100 ) {
cout << "Invalid dollars and cents, negative values\n";
exit(EXIT_FAILURE);
}
}