3.
实验要求:
写一个程序,定义抽象类Container: class Container {
protected: double radius; public:
Container(double r);//抽象类Container的构造函数 virtual double surface_area()=0;//纯虚函数surface_area virtual double volume()=0;//纯虚函数volume };
【要求】
建立3个继承Container的派生类:Sphere(球体)、Cylinder(圆柱体)、Cube(正方体),让每一个派生类都包含虚函数surface_area()和volume(),分别用来球体、圆柱体和正方体的表面积和体积。要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。
程序清单:
#include
using namespace std; class Container {
protected: double radius; public:
Container(double r);//抽象类Container的构造函数 virtual double surface_area()=0;//纯虚函数surface_area virtual double volume()=0;//纯虚函数volume };
Container::Container(double r=0) { }
class Sphere:public Container { public: };
class Cylinder:public Container
Sphere(double x):Container(x) { }
double surface_area() { }
double volume() { }
return 0.75*3.14*radius*radius*radius; return 4*radius*radius*3.14; radius=r;
{ public:
Cylinder(double h,double r):Container(r) { }
double surface_area() { }
double volume() { }
return 3.14*radius*radius*hight;
return 2*3.14*radius*radius+2*3.14*radius*hight; hight=h;
protected: };
class Cube:public Container { public:
Cube(double r):Container(r) { }
double surface_area() { }
double volume() {
return radius*radius*radius; return 6*radius*radius; double hight;
};
}
int main() { }
Container *p; Cube a(6.0); p=&a;
cout<<\正方体表面积:\cout<<\正方体体积:\Sphere b(5.0); p=&b;
cout<<\球表面积:\cout<<\球体积:\Cylinder c(6.0,5.0); p=&c;
cout<<\圆柱表面积:\cout<<\圆柱体体积:\return 0;
运行结果:
4. 实验要求:
设计一个点类Point,其结构如下:
(1) Point类表示二维平面点的集合,数据成员由点的坐标值表示,类型为
int;
(2) 三个重载构造函数:
a) 一个是无参数的构造函数;
b) 一个是带坐标值参数的构造函数,实现对数据成员的初始化; c) 一个是copy构造函数,实现用一个对象初始化本对象; (3) 两个重载成员函数:
a) void offert(int , int ); 实现点的偏移,参数是偏移量;
b) void offert(Point &); 实现点的偏移,参数Point类对象是偏移量; (4) 6个运算符重载函数:
a) bool operator = = (Point &);判断两个点对象是否相等; b) void operator + =(Point &);将两个点对象相加; c) void operator ++();将当前对象自增1(前缀); d) void operator ++(int );将当前对象自增1(后缀);
e) friend Point& operator + (Point &, Point &);将两个点对象相加; f) friend Point &operator ? (Point &, Point &);将两个点对象相减; (5) 两个成员函数提供实例对象对私有数据的访问: