实训7:虚函数与多态性

这篇具有很好参考价值的文章主要介绍了实训7:虚函数与多态性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实训7:虚函数与多态性

参考代码 by 小喾苦
答案仅供参考!



第1关:坐标计算

实验目的

  1. 掌握运算符重载的方法;

实验任务

参考实验指导书第八章的实验任务 1。

实验步骤

参考实验指导书第八章的实验步骤 1。

测试说明

平台会对你编写的代码进行测试:

输入描述:空格隔开的两个整数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关:摩托车类

实验目的

  1. 学习使用虚函数实现动态多态性。

实验任务

参考实验指导书第八章的实验任务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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android java基础_多态性

    向上转换:只能定义被子类覆写的方法,不能调用在子类中定义的方法。 运行结果: JAVA向下转换的例子,在进行对象的向下转换前,必须首先发生对象的向上转换.否则会编译不过 运行结果: 看一下,下面的例子,假如有一千个类继承了father这个类,如果我们要打印他们的信

    2024年02月22日
    浏览(41)
  • 【C++入门到精通】C++入门 —— 继承(基类、派生类和多态性)

    前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的命名空间的一些知识点以及关于C++的缺省参数、函数重载,引用 和 内联函数也认识了什么是类和对象以及怎么去new一个 ‘对象’ ,也了解了C++中的模版,以及学习了几个STL的结构也相信大家都掌握

    2024年02月11日
    浏览(48)
  • C# 类class、继承、多态性、运算符重载,相关练习题

    34.函数重载 35.几个相同的函数  print() ,用于打印不同的数据类型。   36.基类和派生类   37.基类的初始化   38.多重继承   39.动态多态性   40.抽象性和虚方法   41.通过虚方法 area() 来计算不同形状图像的面积   42.运算符重载的实现   @www.runoob.com 

    2024年02月09日
    浏览(45)
  • 【期末不挂科-C++考前速过系列P5】大二C++实验作业-多态性(3道代码题)【解析,注释】

    前言 大家好吖,欢迎来到 YY 滴C++考前速过系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁 主要内容含: 欢迎订阅 YY 滴C++专栏!更多干货持续更新!以下是传送门! YY的《C++》专栏 YY的《C++11》专栏 YY的《Linux》专栏 YY的《数据结构》专栏 YY的《C语言基础》专栏 YY的《

    2024年01月25日
    浏览(54)
  • 【Java基础教程】(十四)面向对象篇 · 第八讲:多态性详解——向上及向下转型、关键字 final与 instanceof的作用~

    掌握final 的主要作用及使用; 掌握对象多态性的概念以及对象转型的操作; 掌握instanceof 的主要作用及使用; 在Java 中 final称为终结器,在Java 里面可以使用 final定义类、方法和属性,用于表示不可变性 。 final 类:当一个类被声明为 final 时,意味着该类不能被

    2024年02月16日
    浏览(53)
  • 获取头歌实训参考答案(EduCoder)

    头歌EduCoder平台实训答案在此,里面搜集了一些答案,可以查查有没有想看的。 https://edaser.github.io/ 一定 不要直接复制答案 ,建议还是自己做,实在不会做的,参考看完后要独立完成。 在这里可以查询一些实训的答案,后台的数据库记录了几百个实训关卡的答案,实现的方

    2024年02月11日
    浏览(42)
  • 【头歌educoder】离散数学实训参考-第一章-集合

    目录 1. 集合及其基本运算的实现 第一关:set简单应用 第二关:《仲夏夜之梦》中的回文单词对 第三关:求幂集  第四关:计算n个集合的笛卡尔乘积 2. 自然数系统 第一关:NaturalNumber的输出  第二关:NaturalNumber的加法 第三关:NaturalNumber的乘法 第四关:将NaturalNumber转换为阿

    2024年02月09日
    浏览(49)
  • 头歌数据结构实训参考---十大经典排序算法

    可通过 目录 快速查阅对应排序算法

    2024年02月04日
    浏览(64)
  • 头歌数据结构实训参考---二叉树及其应用

    第1关 实现二叉树的创建 第2关 计算二叉树的深度和节点个数 第3关 递归实现二叉树左右子树交换 第4关 非递归实现二叉树左右子树交换 第5关 层次遍历二叉树

    2024年02月05日
    浏览(43)
  • 【头歌educoder】离散数学实训参考-第二章-关系-part1-关系基础

    目录  第一关:求给定集合的对角线关系(Diagonal Relation)  第二关:关系的合成  第三关:关系的幂运算  第四关:关系的并运算  第五关:转换成关系矩阵  第六关:自反关系的判断  第七关:反自反关系的判断  第八关:对称关系的判断  第九关:非对称关系的判断  第十

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包