Description Feng Gor是著名的房地产商,她每天的主要工作就是——数钱。这并不是一件容易的事,Feng Gor主要投资两类地,一类是圆的,一类是方的。现在你作为她的会计,需要帮她数钱。 Circle类和Square类继承于Land类,分别代表圆的地和方的地,其投资收入根据单位面积价格(price)和地的面积(根据边长或半径算出)决定。 Accountant类用于计算Feng Gor开发各种房地产带来的收入。其中DevelopEstate函数接收一个Land的指针,计算并累加开发这块房地产带来的收入(这里用到了动态绑定哦)。CheckMoney函数返回当前的收入。 你的提交可能会被如下的代码调用。 #include <iostream> #include <iomanip> using namespace std; int main(int argc, const char *argv[]) { Accountant py; Circle *a = new Circle(100, 10000); Square *b = new Square(100, 50000); py.DevelopEstate(a); cout << setprecision(10) << py.CheckMoney() << endl; py.DevelopEstate(b); cout << setprecision(10) << py.CheckMoney() << endl; return 0; } Sample Output 314159265.4 814159265.4 314159265.4 814159265.4
时间: 2024-01-29 08:04:03 浏览: 138
下面是代码实现,注意要使用虚函数进行动态绑定。
```
#include <iostream>
#include <iomanip>
using namespace std;
class Land {
public:
Land(double p) : price(p) {}
virtual double Area() = 0; // 纯虚函数
protected:
double price;
};
class Circle : public Land {
public:
Circle(double r, double p) : Land(p), radius(r) {}
double Area() { return 3.1415926535 * radius * radius; }
private:
double radius;
};
class Square : public Land {
public:
Square(double l, double p) : Land(p), length(l) {}
double Area() { return length * length; }
private:
double length;
};
class Accountant {
public:
Accountant() : income(0) {}
void DevelopEstate(Land* land) {
income += land->Area() * land->price;
}
double CheckMoney() { return income; }
private:
double income;
};
int main(int argc, const char *argv[]) {
Accountant py;
Circle *a = new Circle(100, 10000);
Square *b = new Square(100, 50000);
py.DevelopEstate(a);
cout << setprecision(10) << py.CheckMoney() << endl;
py.DevelopEstate(b);
cout << setprecision(10) << py.CheckMoney() << endl;
return 0;
}
```
阅读全文