1.编写一个分数类Frac,包含分子numer、分母denom两个私有变量。编写Frac类两个构造函数,一个不带任何参数,另一个包含两个参数用于初始化分子numer、分母denom。 2.编写成员函数Display用于显示成员变量值。 3.编写一个整数类Integer(基类中的denom恒为1),公有继承Frac类,编写对应的构造函数。 4.编写主程序,创建两个派生类对象,并分别调用显示函数,显示对象信息。 5.编写基类友元函数重载>运算符函数,实现分数值的>运算。在主程序中利用上面创建的两个对象测试所编写的运算符重载函数。(题目中不需要考虑分数化简、约分问题)
时间: 2024-03-21 15:40:40 浏览: 76
好的,我来一步一步回答你的问题。
1. Frac类的实现:
```c++
class Frac {
private:
int numer;
int denom;
public:
// 默认构造函数
Frac() {
numer = 0;
denom = 1;
}
// 带参数构造函数
Frac(int n, int d) {
numer = n;
denom = d;
}
// 显示函数
void Display() {
cout << numer << "/" << denom << endl;
}
};
```
2. Integer类的实现:
```c++
class Integer : public Frac {
public:
// 带参数构造函数
Integer(int n) : Frac(n, 1) {}
};
```
3. 主程序代码:
```c++
int main() {
Frac f1(1, 2);
Integer i1(3);
f1.Display();
i1.Display();
if (f1 > i1) {
cout << "f1 > i1" << endl;
} else {
cout << "f1 <= i1" << endl;
}
return 0;
}
```
4. 运算符重载函数的实现:
```c++
friend bool operator>(const Frac &f, const Frac &g) {
return (f.numer * g.denom > g.numer * f.denom);
}
```
希望这些代码可以帮助你解决问题。
阅读全文