• 实验目的和要求

(1)进一步熟悉累的设计,运用继承与派生机制设计派生类,合理设置数据成员和成员函数。

(2)掌握双目运算符、单目运算符的重载方法,对常用算数运算符能在自定义类中通过友元函数、成员函数进行重载,以实现静态多态性。

(3)掌握通过继承、虚函数、基类的指针或引用实现动态多态性。

(4)理解并掌握有纯虚函数的抽象类的作用,在各派生类中重新定义纯虚函数的方法,并实现动态多态性。

实验原理及内容

实验题目1【见实验教材实验五的题目1】 定义Point类,在该类中包含如下内容:

1)私有数据成员:

double x; //x轴坐标

double y; //y轴坐标

2)共有成员函数:

构造函数  //默认值为原点(0.0,0.0)

Point operator++();  //成员函数重载前置“++”

Point operator-(const Point &a);  //成员函数重载运算符“-”

friend Point operator+(const Point &a,const Point &b); //友元函数重载“+”

friend Point operator+(const Point &a,double b); //友元函数重载“+”

friend ostream & operator <<(ostream & out,const Point & obj); //友元函数重载“<<”

给出主函数如下:

int main()

{

Point p1(10,30),p2(-18,0),p3;

cout<<"初始坐标点p1,p2,p3为:";

cout<<p1<<" "<<p2<<" "<<p3<<endl;

p3=p1+p2;

cout<<"执行p3=p1+p2后,坐标点p1,p2,p3为:";

cout<<p1<<" "<<p2<<" "<<p3<<endl;

p3=p3+20;

cout<<"执行p3=p3+20后,坐标点p1,p2,p3为:";

cout<<p1<<" "<<p2<<" "<<p3<<endl;

p2=p3-p1;

cout<<"执行p2=p3-p1后,坐标点p1,p2,p3为:";

cout<<p1<<" "<<p2<<" "<<p3<<endl;

++p2;

cout<<"执行++p2后,坐标点p1,p2,p3为:";

cout<<p1<<" "<<p2<<" "<<p3<<endl;

return 0;

}

#include<iostream>
using namespace std;
class Point {
private:double x;double y;
public :Point(double m = 0.0,double n=0.0){x = m;y = n;}Point operator++();Point operator-(const Point& a);friend Point operator +(const Point& a, const Point& b);friend Point operator+(const Point& a, double b);friend ostream& operator <<(ostream& out, const Point& obj);
};
Point Point::operator++() {++x;++y;return *this;
}
Point Point::operator-(const Point& a) {Point reduce;reduce.x =x-a.x;reduce.y =y-a.y;return reduce;
}
Point operator+(const Point& a, const Point& b){Point puls;puls.x =(a.x+b.x);puls.y =(a.y+b.y);return puls;
}
Point operator+(const Point& a, double b) {Point puls1;puls1.x += a.x+b;puls1.y += a.y+b;return puls1;
}ostream& operator <<(ostream& out, const Point& obj) {out << "(" << obj.x << "," << obj.y << ")";return out;}
int main(){Point p1(10,30),p2(-18,0),p3;cout<<"初始坐标点p1,p2,p3为:";cout<<p1<<" "<<p2<<" "<<p3<<endl;p3=p1+p2;cout<<"执行p3=p1+p2后,坐标点p1,p2,p3为:";cout<<p1<<" "<<p2<<" "<<p3<<endl;p3=p3+20;cout<<"执行p3=p3+20后,坐标点p1,p2,p3为:";cout<<p1<<" "<<p2<<" "<<p3<<endl;p2=p3-p1;cout<<"执行p2=p3-p1后,坐标点p1,p2,p3为:";cout<<p1<<" "<<p2<<" "<<p3<<endl;++p2;cout<<"执行++p2后,坐标点p1,p2,p3为:";cout<<p1<<" "<<p2<<" "<<p3<<endl;return 0;
}

运行结果如下:

实验题目(2)【见实验教材实验五的题目2】定义一个抽象类容器,其中定义若干纯虚函数,实现求表面积、体积、输出等功能。

参考代码如下:

#include<iostream>
using namespace std;
class Container{
protected:double radius;
public:Container(double r){radius = r;}virtual double area() = 0;virtual double volume() = 0;virtual void print() = 0;
};class Cube : public Container                           //立方体类,从Container公有继承
{                        //定义Cube类的成员函数:表面积和体积public://构造函数Cube(double r) : Container(r) {}double area()        //重新定义求面积函数{return 6 * radius * radius;}double volume()   //重新定义求体积函数{return radius * radius * radius;}void print()   //重新定义求打印函数{cout <<"Cube area=" <<area() << "  Cube volum="<<volume() << endl;}
};class Sphere : public    Container                           //球类,从Container公有继承
{//定义Sphere类的成员函数:表面积和体积
public://构造函数Sphere(double r) : Container(r) {}double area()        //重新定义求面积函数{return 4 * 3.14 * radius * radius;}double volume()   //重新定义求体积函数{return (4 * 3.14 * radius * radius) / 3;}void print()   //重新定义求打印函数{cout <<"Sphere  area="<< area() << "   Sphere volume="<<volume() << endl;}
};
class Cylinder : public    Container                           //圆柱体类,从Container公有继承
{//定义Cylinder类的成员函数:表面积和体积
public://构造函数Cylinder(double r) : Container(r) {}double area()      //重新定义求面积函数{return 2*3.14*radius*radius+2*3.14*radius;}double volume()   //重新定义求体积函数{return 3.14 * radius * radius*radius;}void print()   //重新定义求打印函数{cout << "Cylinder area="<<area() << "   Cylinder volum="<<volume() << endl;}
};
int main(){Container* p;Cube c1(1.0);Sphere s1(1.0);Cylinder c2(1.0);p = &c1;cout << p->area() << endl;cout << p->volume() << endl;p->print();p = &s1;cout << p->area() << endl;cout << p->volume() << endl;p->print();p = &c2;cout << p->area() << endl;cout << p->volume() << endl;p->print();return 0;
}

南京邮电大学通达学院C++上机实验参考答案相关推荐

  1. 2023南京邮电大学通达学院《数学实验》MATLAB实验答案

    四月维夏,六月徂暑. 勤将励勉,勿望再晨. --赠nmy 南京邮电大学通达学院<数学实验>MATLAB实验答案 一 声明 二 MATLAB下载 <数学实验>练习一 1.1 1. ...

  2. 南京邮电大学通达学院c语言实验报告,南京邮电大学通达学院c语言程序报告.docx...

    南京邮电大学通达学院c语言程序报告 南京邮电大学通达学院程序设计(上机)报告 题 目: R015M P008E 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 日 期 2015年5月 评 分 ...

  3. 南京邮电大学通达学院c语言实验报告,南京邮电大学通达学院c语言程序报告..docx...

    南京邮电大学通达学院c语言程序报告. 南京邮电大学通达学院程序设计(上机)报告题 目: R015M P008E专 业 学 生 姓 名 班 级 学 号 指 导 教 师 日 期 2015年5月 评 分 细 ...

  4. 南邮通达的计算机科学与技术,2019南京邮电大学通达学院专业排名

    南京邮电大学通达学院,位于江苏扬州,是经国家教育部批准,由南京邮电大学1999年创办的全日制本科独立学院.下面是学习啦小编给大家带来的南京邮电大学通达学院专业排名,供大家参考! 南京邮电大学通达学院专 ...

  5. 南京邮电大学通达学院2023《电子装配实习》报告

    南京邮电大学通达学院2023<电子装配实习>报告 一 声明 二 题目/实习报告提示 三 例答 红笺寄 休遣玉人知 --赠nmy 一 声明 南京邮电大学通达学院2023<电子装配实习& ...

  6. c语言上机实验第五章答案,安徽大学C语言上机实验参考答案

    安徽大学C语言上机实验参考答案 C语言实验参考答案 实验一 5.输入并运行自已编写的程序(教材第一章P14 三编程题). 实验二 1.编写一个程序,从键盘接收3个实数(分别为10.0.20.0.5.0 ...

  7. 微型计算机排除语法错误,南京邮电大学《微机原理与接口技术》上机实验参考答案(四次全)...

    南京邮电大学<微型计算机原理与接口技术>上机实验答案.包含全部四次试验内容,涵盖汇编语言源程序和硬件连接指导等. 第 一次 实验1.3.1 "排除语法错误" 实验3.1 ...

  8. 南京邮电大学微型计算机原理与接口技术实验,南京邮电大学《微机原理与接口技术》上机实验参考答案(四次全).pdf...

    南京邮电⼤学 <微型计算机原理与接⼝技术> 上机实验 汇编语⾔参考程序(四次全) 1 第⼀次 • 实验 1.3.1 "排除语法错误" • 实验 3.1.1 " ...

  9. 南京邮电大学通达学院2023c++实验报告(一)

    题目展示 一.问题描述 实验题目1 定义一个学生类,其中包括如下内容: (1)私有数据成员 ①年龄 age; ②姓名 string name; (2)公有成员函数: ①构造函数:带参数的构造函数Stu ...

最新文章

  1. about diigo
  2. java textview多行_java-Android在textview中多个可点击的字符串
  3. oracle数据库缓存 c,Oracle 19c数据库体系结构-2
  4. 如何通过调试找到自己需要的ABAP增强
  5. lol模型导入ue4_Houdini amp; UE4 程序化建模——石头(一)基础工作流
  6. React组件-事件、状态和生命周期
  7. 在VMware上安装CentOS-6.5 minimal - 安装VMware Tools
  8. js中的call及apply
  9. 2012年2月份第1周51Aspx源码发布详情
  10. ZXing拍码后区分扫描到的是一维码、二维码、其他码
  11. 马士兵oracle_,马士兵oracle视频教程学习笔记个人整理
  12. 未转变者服务器关雨指令,Unturned未转变者3.21版本物品ID代码汇总
  13. mysql插入路径_Conventional-pathinsert(传统路径插入)
  14. 如何用ps 在图片上面写字
  15. push大法破解登录框
  16. 【RocketMQ】玩转各种类型的消息
  17. ubuntu 桌面菜单栏和任务栏程序标题栏都不见了- 已解决
  18. Realme GT Neo5 SE ROOT 解锁BL教程
  19. python 爬虫 Form Data爬取穷游网的数据
  20. 爬虫学习笔记:爬取古诗文网

热门文章

  1. 春节期间商城如何做好运营
  2. 【转载】一副小漫画介绍什么是EDI
  3. 计算机视觉3-> yolov5目标检测1 |从入门到出土
  4. Vue数组改变,视图不更新解决方案
  5. jrebel安装激活
  6. halcon相机标定助手_Halcon 学习笔记---单相机标定(2)
  7. 如何挖掘大数据这座“钻石矿”
  8. 解决小米用蓝牙耳机听歌卡顿
  9. 小黑马1号 说 贫道望青楼
  10. 时间戳服务器作用,叶胜超:一分钟搞懂时间戳和时间戳服务器(21)