您的位置:首页 > 编程语言 > C语言/C++

C++纯虚函数作为接口类举例

2016-05-14 10:42 393 查看
#include <iostream>
using namespace std;
/*抽象类作为接口类举例*/
class Shape
{
public:
virtual double area() = 0;//纯虚函数,纯虚函数首先与子类的对应函数属重载函数,除了形参可不相同(相同为重写),返回值类型等都相同。
protected:
private:
};//抽象类,不能直接声明对象,仅作接口类使用。
class Trigon :public Shape
{
public:
double area(){return a*b/2;}
Trigon(double x, double y){a = x; b = y;}
protected:
double a, b;
private:

};
class Square :public Trigon
{
public:
double area(){return a*b;}
//	Square():Trigon(0,0){cout<<"执行了"<<endl;};//自定义一个构造函数;可配合下一个注释代码测试,验证下一个注释的内容。
Square(double j, double k):Trigon(j,k){}//通过Trigon()为继承而来的保护成员a\b赋值,使得条理更清晰。
protected:
private:
};
class Circle :public Square
{
public:
//	Circle(double r){radius = r;}//未显性指明调用父类的构造函数时,默认调用父类的没有形参的默认构造函数。而父类Square已有自定义的构造函数,系统就不再为其提供任何构造函数了,故报错。
Circle(double r):Square(0,0){radius = r;}//显性指明调用父类的构造函数。
double area(){return radius*radius*3.14;}
protected:
private:
double radius;

};
void main()
{
Shape * p;
bool quit = false;
while (1)
{
int choice;
cout<<"请选择:(0)退出(1)三角形的面积(2)矩形的面积(3)圆的面积.\n";
cin>>choice;
switch (choice)
{
case 0:
quit = true;
break;
case 1:
p = new Trigon(2.58,3.69);//三角形
cout<<p->area()<<endl;
break;
case 2:
p = new Square(23.6,5.666);//矩形
cout<<p->area()<<endl;
break;
case 3:
p = new Circle(6.866);
cout<<p->area()<<endl;
break;
default:
cout<<"请输入0到3的数字:"<<endl;
break;
}
if (choice>0 && choice<=3)
{
delete p;//当输入有效时释放堆中内存空。间
}
if (quit)
{
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: