实训7:虚函数与多态性
参考代码 by 小喾苦
答案仅供参考!
第1关:坐标计算
实验目的
- 掌握运算符重载的方法;
实验任务
参考实验指导书第八章的实验任务 1。
实验步骤
参考实验指导书第八章的实验步骤 1。
测试说明
平台会对你编写的代码进行测试:文章来源:https://www.toymoban.com/news/detail-467803.html
输入描述:空格隔开的两个整数x和y,表示一个坐标
输出描述:输出结果为5行,分别执行并输出p,p++,++p,p–,–p的结果
测试输入: 1 2
预期输出:
(1, 2)
(1, 2)
(3, 4)
(3, 4)
(1, 2)
C++参考代码
#include <iostream>
using namespace std;
class Point
{
int _x, _y;
public:
Point(int x=0, int y=0) : _x(x), _y(y) {}
Point& operator++();
Point operator++(int);
Point& operator--();
Point operator--(int);
friend ostream& operator << (ostream& o, const Point& p);
};
/********** Begin **********/
Point& Point::operator++() {
this->_x++;
this->_y++;
return *this;
}
Point Point::operator++(int) {
Point temp(*this);
this->_x++;
this->_y++;
return temp;
}
Point& Point::operator--() {
this->_x--;
this->_y--;
return *this;
}
Point Point::operator--(int) {
Point temp(*this);
this->_x--;
this->_y--;
return temp;
}
/********** End **********/
ostream& operator << (ostream& o, const Point& p) {
o << '(' << p._x << ", " << p._y << ')';
return o;
}
int main()
{
int x,y;
cin>>x>>y;
Point p(x, y);
cout << p << endl;
cout << p++ << endl;
cout << ++p << endl;
cout << p-- << endl;
cout << --p << endl;
return 0;
}
第2关:摩托车类
实验目的
- 学习使用虚函数实现动态多态性。
实验任务
参考实验指导书第八章的实验任务2。
实验步骤
参考实验指导书第八章的实验步骤2。
测试说明
输出把基类中 Run、Stop 声明为虚函数时主程序的输出结果
平台会对你编写的代码进行测试:
测试输入:无
预期输出:文章来源地址https://www.toymoban.com/news/detail-467803.html
vehicle run!
vehicle stop!
bicycle run!
bicycle stop!
motocar run!
motocar stop!
motocycle run!
motocycle stop!
vehicle run!
vehicle stop!
bicycle run!
bicycle stop!
motocar run!
motocar stop!
motocycle run!
motocycle stop!
C++参考代码
#include <iostream>
using namespace std;
/********** Begin **********/
class Vehicle {
public:
virtual void Run() {cout << "vehicle run!" << endl;}
virtual void Stop() {cout << "vehicle stop!" << endl;}
};
class Bicycle : virtual public Vehicle {
public:
virtual void Run() {cout << "bicycle run!" << endl;}
virtual void Stop() {cout << "bicycle stop!" << endl;}
};
class Motorcar : virtual public Vehicle {
public:
virtual void Run() {cout << "motocar run!" << endl;}
virtual void Stop() {cout << "motocar stop!" << endl;}
};
/********** End **********/
class Motorcycle : public Bicycle, public Motorcar
{
public:
void Run() {cout << "motocycle run!" << endl;}
void Stop() {cout << "motocycle stop!" << endl;}
};
int main()
{
Vehicle v;
v.Run();
v.Stop();
Bicycle b;
b.Run();
b.Stop();
Motorcar m;
m.Run();
m.Stop();
Motorcycle mc;
mc.Run();
mc.Stop();
Vehicle* vp = &v;
vp->Run();
vp->Stop();
vp = &b;
vp->Run();
vp->Stop();
vp = &m;
vp->Run();
vp->Stop();
vp = &mc;
vp->Run();
vp->Stop();
return 0;
}
到了这里,关于实训7:虚函数与多态性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!