300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 南京邮电大学通达学院C++上机实验参考答案

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

时间:2019-08-26 13:41:19

相关推荐

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

实验目的和要求

(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;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。