关于C++多态的一个例子
来源:互联网 发布:不合格品的数据分析 编辑:程序博客网 时间:2024/06/05 09:16
#include <iostream>
#include <cmath>
using namespace std;
class Shape
{
public:
Shape() {}
virtual ~Shape() = 0;
virtual double getPerimeter() = 0;
virtual double getArea() = 0;
};
Shape::~Shape() { } //①能不能不写??为什么??
class Triangle: public Shape
{
public:
Triangle() {}
Triangle(double a, double b, double c):a(a),b(b),c(c) {}
//Triangle(const Triangle ©):a(copy.a),b(copy.b),c(copy.c) {}
Triangle& operator=(const Triangle& assign)
{
if (this != &assign)
{
a = assign.a;
b = assign.b;
c = assign.c;
}
return *this;
}
virtual ~Triangle() {}
virtual double getPerimeter()
{
return a+b+c;
}
virtual double getArea()
{
double q = (a+b+c)/2;
return sqrt(q*(q-a)*(q-b)*(q-c));
}
private:
double a;
double b;
double c;
};
class Rectangle:public Shape
{
public:
Rectangle() {}
Rectangle(double h,double w):height(h),width(w) //②调换顺序,如何??
{ }
virtual ~Rectangle() {}
virtual double getPerimeter()
{
return 2 * (width + height);
}
virtual double getArea()
{
return width * height; //③假如Rectangle有一个独有的成员函数,问如何利用动态绑定技术实现??
}
private:
double height;
double width;
};
int main()
{
Shape *shape[2];
shape[1] = new Rectangle(1.0, 2.0);
shape[0] = new Triangle(3.0, 4.0, 5.0);
for (int i = 0; i < 2; ++i)
{
if (typeid(*shape[i]) == typeid(Triangle)) //④typeid用法??
cout << "这是一个三角形" << endl;
else if (typeid(*shape[i]) == typeid(Rectangle))
cout << "这是一个矩形" << endl;
cout << "周长为:" << shape[i]->getPerimeter() << " ";
cout << "面积为:" << shape[i]->getArea() << endl;
}
delete shape[0];
delete shape[1];
return EXIT_SUCCESS;
}
- 关于C++多态的一个例子
- 关于多态的一个很形象的例子
- C语言中关于指针数组的一个例子
- 关于GC垃圾收集器的一个C#例子
- C 关于位段使用的一个简单例子
- 关于继承和多态的一个简单例子
- 一个关于多态之虚函数的例子
- 一个关于Timer()的例子..
- 一个关于异常的例子
- 关于多线程的一个例子
- 关于TabHost的一个例子
- 关于list的一个例子
- 关于Berkeley的一个例子
- 关于allocator的一个例子
- 关于ListActivity的一个例子
- 关于CSS的一个例子
- 关于abstract的一个例子
- 关于数组的一个例子
- 五一的感受
- 服务器的基本配置
- Chart 报表
- c++ 字符串包装类String
- 超简单的SHELL(有纠结的BUG)
- 关于C++多态的一个例子
- el表达式无效
- 今天开通了空间
- String与string的区别
- 青春
- 网络工程师面试题
- 抽象类的重载
- 我的学习笔记—001
- 我的笔记