zoukankan      html  css  js  c++  java
  • [北大程序设计与算法]--虚函数与多态的实例

    在这里插入图片描述
    在这里插入图片描述

    #include<iostream>
    #include<vector>
    #include<map>
    #include<string>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #include<set>
    #include<queue>
    #include<unordered_map>
    #include<cmath>
    using namespace std;
    class CShape
    {
    public:
    	virtual double area() = 0;
    	virtual void printInfo() = 0;
    };
    class CRectangle :public CShape
    {
    public: 
    	int w, h;
    	virtual double area();
    	virtual void printInfo();
    };
    class CCircle :public CShape
    {
    public:
    	int r;
    	virtual double area();
    	virtual void printInfo();
    };
    class CTriangle :public CShape
    {
    public:
    	int a, b, c;
    	virtual double area();
    	virtual void printInfo();
    };
    double CRectangle::area()
    {
    	return w*h;
    }
    void CRectangle::printInfo()
    {
    	cout << "Rectangle:" << area() << endl;
    }
    double CCircle::area()
    {
    	return 3.14*r*r;
    }
    void CCircle::printInfo()
    {
    	cout << "CCircle:" << area() << endl;
    }
    double CTriangle::area()
    {
    	double p = (a + b + c) / 2.0;
    	return sqrt(p * (p - a) * (p - b) * (p - c));
    }
    void CTriangle::printInfo()
    {
    	cout << "Triangle:" << area() << endl;
    }
    bool mycompare(CShape* a, CShape* b)
    {
    	return a->area() < b->area();
    }
    int main()
    {
    	CShape* p[100];
    	int i; int n;
    	CRectangle* pr; CCircle* pc; CTriangle* pt;
    	cin >> n;
    	for (i = 0; i < n; i++)
    	{
    		char c;
    		cin >> c;
    		switch(c)
    		{
    		case 'R':
    			p[i] = new CRectangle;
    			cin >> pr->w >> pr->h;
    			p[i] = pr;
    			break;
    		case 'C':
    			pc = new CCircle;
    			cin >> pc->r;
    			p[i] = pc;
    			break;
    		case 'T':
    			pt = new CTriangle;
    			cin >> pt->a >> pt->b >> pt->c;
    			p[i] = pt;
    			break;
    		}
    	}
    	sort(p, p + n, mycompare);
    	for (i = 0; i < n; i++)
    	{
    		p[i]->printInfo();
    	}
    	return 0;		
    }
    
  • 相关阅读:
    python学习笔记(五)os、sys模块
    Lepus_天兔的安装
    python学习笔记(四)random 、json模块
    python学习笔记(三)函数
    Jenkins的安装及邮件配置
    Nginx+tomcat配置负载均衡集群
    python学习笔记(二)文件操作和集合
    python练习
    Jmeter(十)Linux下配置安装Jmeter及执行测试任务
    Jmeter(九)压力测试
  • 原文地址:https://www.cnblogs.com/Hsiung123/p/13811943.html
Copyright © 2011-2022 走看看