抽象类和纯虚函数

// AbsoluteVirtualFunction.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;

#define PI      3.1415926


class container//定义一个抽象类
{
protected :
 double radius; //半径
public:
 container(double radius)
 {
  container::radius=radius;
 }
 virtual void surface_area()=0;//求容器表面积,纯虚函数,此处不能实现,必须在各派生类中实现
 virtual void volume()=0;//求容器体积,纯虚函数,此处不能实现,必须在各派生类中实现
};

class cube:public container  //定义正方体类
{
public:
 cube(double radius):container(radius)//调用基类带参数的构造函数
 {
  
 }
 void surface_area()  //求表面积
 {
   cout<<"the cube surface area is "<<radius*radius*6<<endl;
 }
 void volume()//求体积
 {
  cout<<"the cube volume is "<<radius*radius*radius<<endl;
 }
};

class sphere:public container //定义球体类
{
public:
 sphere(double radius):container(radius)
 {
  
 }
 void surface_area()//求表面积
 {
  cout<<"the sphere surface area is "<<4*PI*radius*radius<<endl;
 }
 void volume()//求体积
 {
  cout<<"the sphere volume is "<<4*PI*radius*radius*radius/3<<endl;
 }

};

class cylinder:public container //定义圆柱体类
{
 double height;
public:
 cylinder(double height,double radius):container(radius)
 {
  cylinder::height=height;
 }
 void surface_area()  //求表面积
 {
  cout<<"the cylinder surface area is "<< PI*2*radius*height+PI*2*radius*radius<<endl;
 }
 void volume()  //求体积
 {
  cout<<"the cylinder volume is "<< PI*radius*radius*radius;
 }
};

int _tmain(int argc, _TCHAR* argv[])
{
 container *ptr; //定义一个基类指针,指到哪里运行到哪里
 cube obj1(5);
 sphere obj2(5);
 cylinder obj3(5,5);

 ptr=&obj1; //指向派生类cube的对象,执行cube类版本的surface_area和volume
 ptr->surface_area();
 ptr->volume();

 ptr=&obj2; //指向派生类sphere的对象,执行sphere类版本的surface_area和volume
 ptr->surface_area();
 ptr->volume();

 ptr=&obj3; //指向派生类cylinder的对象,执行cylinder类版本的surface_area和volume
 ptr->surface_area();
 ptr->volume();

 getch();
 
 return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值