第六章作业
2015-06-28 23:11
253 查看
【6.13】定义基类base,其数据成员为高h,定义成员函数disp为虚函数。然后再由High派生出长方体类Cuboid与圆柱体类Cylinder。并在两个派生类中定义成员函数disp为虚函数。在主函数中,用基类base定义指针变量pc,然后用指针pc动态调用基类与派生类中虚函数disp,显示长方体和圆柱体的体积。
【6.14】给出下面的抽象基类container:
class container{ //声明抽象类container
protected:
double radius;
public:
container(double radius1); //抽象类container的构造函数
virtual double surface_area()=0; //纯虚函数surface_area
virtual double volume()=0; //纯虚函数volume
};
要求建立3个继承container的派生类cube、sphere与cylinder,让每一个派生类都包含虚函数surface_area()和volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。
#include<iostream>
using namespace std;
class container{ //声明抽象类container
protected:
double radius;
public:
container(double radius1); //声明抽象类container的构造函数
virtual double surface_area()=0; //声明纯虚函数surface_area
virtual double volume()=0; //声明纯虚函数volume
};
container::container(double radius1) //定义抽象类container的构造函数
{ radius=radius1;
}
class cube:public container //声明一个正方体派生类cube
{ public:
cube(double radius1):container(radius1)
{ }
double surface_area() //定义虚函数surface_area
{ return 6*radius*radius;
}
double volume() //定义虚函数volume
{ return radius*radius*radius;
}
};
class sphere:public container //声明一个球体派生类sphere
{ public:
sphere(double radius1):container(radius1)
{ };
double surface_area() //纯虚函数surface_area
{ return 4*3.1416*radius*radius;
}
double volume() //纯虚函数volume
{ return 3.1416*radius*radius*radius*4/3;
}
};
class cylinder: public container //声明一个圆柱体派生类cylinder
{ double height;
public:
cylinder(double radius1,double height1):container(radius1)
{ height=height1;
}
double surface_area() //定义虚函数surface_area
{ return 2*3.1416*radius*(radius+height);
}
double volume() //定义虚函数volume
{ return 3.1416*radius*radius*height;
}
};
int main()
{ container *ptr; //定义抽象类Shape的对象指针ptr
cube obj1(5.0); //定义正方体的类对象obj1
sphere obj2(5.0); //定义球体的类对象obj2
cylinder obj3(5.0,6.0); //定义圆柱体的类对象obj2
ptr=&obj1; //指针ptr指向正方体类对象obj1
cout<<"这个正方体的表面积是:"<<ptr->surface_area()<<endl; //求正方体的表面积
cout<<"这个正方体的体积是:"<<ptr->volume()<<endl<<endl; //求正方体的的体积
ptr=&obj2; //指针ptr指向球体的类对象obj2
cout<<"这个球体表面积是:"<<ptr->surface_area()<<endl; //求球体的表面积
cout<<"这个球体的体积是:"<<ptr->volume()<<endl<<endl; //求球体的的体积
ptr=&obj3; //指针ptr指向圆柱体类的对象obj3
cout<<"这个圆柱体的表面积是:"<<ptr->surface_area()<<endl; //求圆柱体的表面积
cout<<"这个圆柱体的体积是:"<<ptr->volume()<<endl; //求圆柱体的的体积
system("pause");
return 0;
}
#include<iostream> using namespace std; class Base{ //基类 public: Base() { } Base(double h1) { h=h1;} virtual void show() //虚函数show { cout<<"长方体和圆柱体的高度都是:"<<h<<endl; } protected: double h; //高度 }; class Cuboid:public Base{ //长方体类 public: Cuboid(double l=0,double w=0,double h=0):Base(h) { len=l, wid=w; } virtual void show() //虚函数disp { cout<<"长方体:"<<endl; cout<<" 长度="<<len<<endl; cout<<" 宽度="<<wid<<endl; cout<<" 高度="<<h<<endl; cout<<" 长方体的体积="<<len*wid*h<<endl; } private: double len,wid; //长度和宽度 }; class Cylinder:public Base { //圆柱体类 public: Cylinder(double r1=0,double h1=0):Base(h1) { r=r1;} virtual void show() //虚函数disp { cout<<"圆柱体:"<<endl; cout<<" 半径="<<r<<endl; cout<<" 高度="<<h<<endl; cout<<" 圆柱体的体积="<<r*r*3.14*h<<endl; } private: double r; //半径 }; int main() { Base *pc; //定义基类指针 Cuboid cu(5,7,8); //定义长方体类对象 Cylinder cy(5,4); //定义圆柱体类对象 pc=&cu; pc->show(); //计算长方体体积 pc=&cy; pc->show(); //计算圆柱体体积 system("pause"); return 0; }
【6.14】给出下面的抽象基类container:
class container{ //声明抽象类container
protected:
double radius;
public:
container(double radius1); //抽象类container的构造函数
virtual double surface_area()=0; //纯虚函数surface_area
virtual double volume()=0; //纯虚函数volume
};
要求建立3个继承container的派生类cube、sphere与cylinder,让每一个派生类都包含虚函数surface_area()和volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。
#include<iostream>
using namespace std;
class container{ //声明抽象类container
protected:
double radius;
public:
container(double radius1); //声明抽象类container的构造函数
virtual double surface_area()=0; //声明纯虚函数surface_area
virtual double volume()=0; //声明纯虚函数volume
};
container::container(double radius1) //定义抽象类container的构造函数
{ radius=radius1;
}
class cube:public container //声明一个正方体派生类cube
{ public:
cube(double radius1):container(radius1)
{ }
double surface_area() //定义虚函数surface_area
{ return 6*radius*radius;
}
double volume() //定义虚函数volume
{ return radius*radius*radius;
}
};
class sphere:public container //声明一个球体派生类sphere
{ public:
sphere(double radius1):container(radius1)
{ };
double surface_area() //纯虚函数surface_area
{ return 4*3.1416*radius*radius;
}
double volume() //纯虚函数volume
{ return 3.1416*radius*radius*radius*4/3;
}
};
class cylinder: public container //声明一个圆柱体派生类cylinder
{ double height;
public:
cylinder(double radius1,double height1):container(radius1)
{ height=height1;
}
double surface_area() //定义虚函数surface_area
{ return 2*3.1416*radius*(radius+height);
}
double volume() //定义虚函数volume
{ return 3.1416*radius*radius*height;
}
};
int main()
{ container *ptr; //定义抽象类Shape的对象指针ptr
cube obj1(5.0); //定义正方体的类对象obj1
sphere obj2(5.0); //定义球体的类对象obj2
cylinder obj3(5.0,6.0); //定义圆柱体的类对象obj2
ptr=&obj1; //指针ptr指向正方体类对象obj1
cout<<"这个正方体的表面积是:"<<ptr->surface_area()<<endl; //求正方体的表面积
cout<<"这个正方体的体积是:"<<ptr->volume()<<endl<<endl; //求正方体的的体积
ptr=&obj2; //指针ptr指向球体的类对象obj2
cout<<"这个球体表面积是:"<<ptr->surface_area()<<endl; //求球体的表面积
cout<<"这个球体的体积是:"<<ptr->volume()<<endl<<endl; //求球体的的体积
ptr=&obj3; //指针ptr指向圆柱体类的对象obj3
cout<<"这个圆柱体的表面积是:"<<ptr->surface_area()<<endl; //求圆柱体的表面积
cout<<"这个圆柱体的体积是:"<<ptr->volume()<<endl; //求圆柱体的的体积
system("pause");
return 0;
}
相关文章推荐
- servlet初步(六) application
- Redis和Memcache对比及选择
- JVM 垃圾回收器工作原理及使用实例介绍
- 学习前端的碎碎念
- Cocos2d-x的学习之旅(八)ScrollView
- 什么是表达式树,它与表达式、委托有什么区别?(1)
- iOS-UI控件之UITableView(一)
- 初次使用Android Studio遇到的问题
- 在 Word 中的受支持的区域设置标识符的列表
- 线性表的操作
- Hive:ORC File Format存储格式详解
- bootstrap 模板
- day002--Mac终端常用命令及C语言三中基本数据类型
- 第八十五、七天 how can I 坚持
- syn flood
- MySql索引的学习
- 黑马程序员-OC语言-面向对象编程概念(听课笔记)
- 黑马程序员——C语言之运算符与程序结构
- js的对象 操作
- 20150628菜鸟对数据结构的 疑问