首页 > 编程语言 > 详细

C++ 设计抽象基类的策略

时间:2014-03-05 20:10:23      阅读:546      评论:0      收藏:0      [点我收藏+]

(1)分析相关对象的需求,设计出一组实现公共功能的函数。

(2)将这些函数作为基类的虚函数(或纯虚函数),它们定义了一个

         统一的公共接口。

(3)由该类基类派生出若干子类,在各子类中实现这些虚函数。

#include<iostream>
using namespace std;

class Container //抽象类
{
protected:
	double radius;
public:
	Container(double radius){
		Container::radius = radius;
	}

	virtual double surface_area()=0;//纯虚函数
	virtual double volume()=0;//纯虚函数
};

class Cube:public Container
{
public:
	Cube(double radius):Container(radius){}
	double surface_area(){return radius*radius*6;}
	double volume(){return radius*radius*radius;}
};

class Sphere:public Container
{
public:
	Sphere(double radius):Container(radius){}
	double surface_area(){return radius*radius*3.14;}
	double volume(){return 3.1416*radius*radius*radius*4/3;}
};

class Cylinder:public Container
{
	double height;
public:
	Cylinder(double radius, double height):Container(radius){
		Cylinder::height = height;
	}
	double surface_area(){
		return 2*3.1416*radius*(height+radius);
	}
	double volume(){return 3.1416*radius*radius*height;}
};

int main()
{
	Container *p;
	Cube obj1(5);
	Sphere obj2(5);
	Cylinder obj3(5,5);
	p = &obj1;
	cout<<"正方体表面积:"<<p->surface_area()<<endl;
	cout<<"正方体体积:"<<p->volume()<<endl;
	p = &obj2;
	cout<<"球体表面积:"<<p->surface_area()<<endl;
	cout<<"球体体积:"<<p->volume()<<endl;
	p = &obj2;
	cout<<"圆柱体表面积:"<<p->surface_area()<<endl;
	cout<<"圆柱体体积:"<<p->volume()<<endl;
	return 0;
}


C++ 设计抽象基类的策略,布布扣,bubuko.com

C++ 设计抽象基类的策略

原文:http://blog.csdn.net/slience_perseverance/article/details/20546955

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!