C++小例子

这篇博客介绍了一个C++编程实例,定义了一个抽象基类Shape,派生了Square、Trapezoid和Triangle三个类,使用虚函数计算不同图形的面积,并通过基类指针数组来操作派生类对象,实现了计算图形总面积的功能。
摘要由CSDN通过智能技术生成


        写一个程序,定义一个抽象类Shape,由它派生3个类:Square(正方形)、Trapezoid(梯形)和Triangle(三角形)。用虚函数分别计算几种图形面积、并求它们的和。要求用基类指针数组,使它每一个元素指向一个派生类对象。

分析:题目给出的很清楚,只要写一个基类,三个派生类,并且通过主函数显示出来就可以了。。

唯一有点难度的就是最后一句话,,用基类指针数组,使他每一个元素指向一个派生类对象。

这个可以在主函数中,声明一个数组,数组中包含各形状图形的参数,将数组的指针指向调用派生类的方法。。

源码如下:

#include <iostream>
using namespace std;
class Shape
{
public :
	virtual double area() const=0;
};
//正方形:长*宽
class Square:public Shape{
public:
	Square(double s):side(s){} //
	double area() const{
		return side*side;//正方形的面积
	}
private :
	double side;//定义一个私有边长
};
//梯形:(上底加下底&
c++语言实例#include <iostream.h> const int N=1000000; class set { int IntArray[N]; int last; public: int Append(); int Delete(); int Nember(int x); int Empty(); int Full(); void Display(); void find(); set(); }; int set::Nember(int x) { int i; for(i=0;i<last;i++) if(IntArray[i]==x) return 1; return 0; } set::set() { last=0; } int set::Empty() //判断集合是否空 { if(last==0) return 1; return 0; } int set::Full() { if(last==N) return 1; return 0; } int set::Append() { if(Full()) return 0; int x; cout<<"请输入你要添加的数"; cin>>x; if(Nember(x)) return 0;// 集合中已经有x IntArray[last]=x; last++; return 1; // 插入x } int set::Delete() { if(Empty()) { cout<<"数组为空"; return 0; } int i; int x; int j; cout<<"请输入你要删除的数"; cin>>x; for(i=0;i<last;i++) if(IntArray[i]==x) { for(j=i;j<last;j++) IntArray[j]=IntArray[j+1]; last--; cout<<"删除后:"<<endl;; Display(); return 1; } cout<<"集合中没有你要删除的数!"<<endl; return 0; } void set::Display() { int i; for(i=0;i<last;i++) { cout<<IntArray[i]<<'\t'; if((i+1)%5==0) cout<<endl; } cout<<endl; } void set::find() { if(Empty()) { cout<<"数组为空"; } else { int x; int i; cout<<"请输入要查找的数:"; cin>>x; for(i=0;i<last;i++) if(IntArray[i]==x) break; if(i>=last) cout<<"没有查到!"<<endl; else cout<<"找到了,在数组第"<<i+1<<"位置"<<endl; } } void main() { set b; b.Append(); b.Append(); b.Append(); b.Append(); b.Append(); b.Append(); b.Append(); b.Append(); b.Display(); b.Display(); b.Display(); b.Display(); b.Display(); b.Display(); b.Delete(); b.Delete(); b.Delete(); b.Delete(); b.Delete(); b.Delete(); }
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值