第1关:多态实现计算器功能
描述
完善右侧的代码,使程序能够正常运行。要求 BaseCalculator 类中提供 getResult() 函数(无需实现),在 AddCalculator 类中实现两个成员相加(m_A + m_B),在 SubCalculator 类中实现两个成员相减(m_A - m_B)
输入描述:
无
#include <iostream>
using namespace std;
class BaseCalculator {
public:
int m_A;
int m_B;
// write your code here......
virtual int getResult()=0;//纯虚函数
};
// 加法计算器类
class AddCalculator : public BaseCalculator {
// write your code here......
public:
virtual int getResult(){return m_A+m_B;}
};
// 减法计算器类
class SubCalculator : public BaseCalculator {
// write your code here......
public:
virtual int getResult(){return m_A-m_B;}
};
int main() {
BaseCalculator* cal = new AddCalculator;
cal->m_A = 10;
cal->m_B = 20;
cout << cal->getResult() << endl;
delete cal;
cal = new SubCalculator;
cal->m_A = 20;
cal->m_B = 10;
cout << cal->getResult() << endl;
delete cal;
return 0;
}
第2关:第二关:多态实现求面积体积
描述
现在有长方形类(rectangle),和以此为基类构建的长方体类(cuboid),运用多态在两个类中实现int getval()方法,在长方形类中是求面积功能,在长方体类中是求体积功能。
输入描述:
输入三个整数x,y,z分别表示长、宽、高。
输出描述:
第一行输出一个整数表示长方体的面积。 第二行输出一个整数表示长方体的体积。
示例1
输入:
3 2 1
输出:
6 6
#include<iostream>
using namespace std;
class rectangle {
private:
int length, width;
public:
rectangle(int x, int y) {
length = x;
width = y;
}
void set(int x, int y) {
length = x;
width = y;
}
int getlength() const{
return length;
}
int getwidth() const{
return width;
}
// write your code here...
virtual int getval() const{//使用virtual类使getval()方法可以在派生类中被重写
return length*width;
}
// your code end
};
class cuboid: public rectangle {
private:
int height;
public:
cuboid(int x, int y, int z): rectangle(x, y) {
height = z;
}
// write your code here...
//获取高度
int getHeigth() const{
return height;
}
//获取体积
int getval() const override{
return height*rectangle::getval();//调用父类的getval()方法获取面积,然后乘以高度得到体积
}
// your code end
};
int main() {
int x, y, z;
cin >> x >> y >> z;
cuboid a(x, y, z);
rectangle b(x, y);
rectangle *p = &b;
cout << p->getval() << '\n';//输出长方体面积
p = &a;
cout << p->getval();//输出长方体面积
return 0;
}