立体类的面积和体积--虚函数

/*
*Copyright(c)2014,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:马广明
*完成日期:2014 年 5 月 27 日
*版本号:v1.0
*问题描述:求各种立体体积。
*输入描述:无。
*程序输出:正方体,球体,圆柱体面积及体积
*问题分析:
*算法设计:
*/
#include <iostream>
using namespace std;
const double pi=3.1415926;
class CSolib
{
public:
    virtual double area()=0;
    virtual double volume()=0;
};
class CCube:public CSolib
{
public:
    CCube(double bc):bianchang(bc){}
    virtual double area();
    virtual double volume();
private:
    double bianchang;
};
class CBall:public CSolib
{
public:
    CBall(double R):r(R){}
    virtual double area();
    virtual double volume();
private:
    double r;
};
class CCylinde:public CSolib
{
public:
    CCylinde(double R,double H):r(R),h(H){}
    virtual double area();
    virtual double volume();
private:
    double r,h;
};
double CCube::area()
{
    return 6*bianchang*bianchang;
}
double CCube::volume()
{
    return bianchang*bianchang*bianchang;
}
double CBall::area()
{
    return 4*pi*r*r;
}
double CBall::volume()
{
    return 4/3*pi*r*r*r;
}
double CCylinde::area()
{
    return 2*pi*r*r+2*pi*r*h;
}
double CCylinde::volume()
{
    return pi*r*r*h;
}
int main()
{
    CSolib *pt;
    CCube ccube(5);
    CBall cball(3.5);
    CCylinde ccylinde(3.5,5);
    pt=&ccube;
    cout<<"正方体面积:"<<pt->area()<<endl;
    cout<<"正方体体积:"<<pt->volume()<<endl;
    pt=&cball;
    cout<<"球体面积:"<<pt->area()<<endl;
    cout<<"球体体积:"<<pt->volume()<<endl;
    pt=&ccylinde;
    cout<<"圆柱体面积:"<<pt->area()<<endl;
    cout<<"圆柱体体积:"<<pt->volume()<<endl;
    return 0;
}

立体类的面积和体积--虚函数

时间: 2024-10-12 14:51:07

立体类的面积和体积--虚函数的相关文章

【转载】 C++多继承中重写不同基类中相同原型的虚函数

本篇随笔为转载,原文地址:C++多继承中重写不同基类中相同原型的虚函数. 在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA { public: virtual void TestA(); }; class CBaseB { public: virtual void TestB(); }; class CDerived : public CBaseA, public CBaseB { public: virtual void TestA()

只有基类的析构函数需要为虚函数

// // main.cpp // TescDtor // // Created by Jiacan Li on 6/16/17. // Copyright © 2017 Jiacan Li. All rights reserved. // #include <iostream> using namespace std; class ClxBase1 { public: ClxBase1() { } virtual ~ClxBase1() { cout<<"~ClxBas

形状类族中的纯虚函数

输入代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:sum123.cpp *作 者:林海云 *完成日期:2015年6月13日 *版 本 号:v2.0 * *问题描述:写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形). 用如下的main()函数,求出定义的几个几何体的面积和. *程序输入:无 *程序输出:总面积 */ #in

第十三周项目二-形状类族中的纯虚函数

写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形).用如下的main()函数,求出定义的几个几何体的面积和. int main() { Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,参数为圆半径 Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,参数为矩形长.宽 Triangle t1(4.5,8.4),t2(3

14周 项目2 形状类族中的纯虚函数

#include <iostream> using namespace std; class Shape { public: virtual double area()=0; }; class Circle:public Shape { public: Circle(double r):R(r) {} virtual double area() { return R*R*3.14; } protected: double R; }; class Rectangle:public Shape {

C++类的构造函数不能为虚函数的原因

C++类的对象构造的时候,首先申请一片内存,然后调用构造函数进行初始化: 我们知道,存在虚函数的话,也会存在一个虚函数表vtable,而虚函数表示在什么时候产生的呢,当然是在调用构造函数之后产生的: 那么问题来了,如果构造函数为虚函数,此时的内存是一片空白,不存在该虚函数表vtable,那么无法找到该构造函数: 所以说,构造函数不能为虚函数. 对于析构函数而言,可以为虚函数,因为此时虚函数表早已建立:并且,常常析构函数都是虚函数.原因就是,通过基类指针在销毁对象的时候,可以正确的识别要销毁对象的

??项目2-形状类族中的纯虚函数

项目2-形状类族的中的纯虚函数 写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形).用如下的main()函数,求出定义的几个几何体的面积和. int main() { Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,参数为圆半径 Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,参数为矩形长.宽 Triangle

第十三周项目2:形状类族中的纯虚函数

问题及代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:project.cpp *作 者:陈文青 *完成日期:2015年6月3日 *版 本 号:v1.0 * *问题描述:写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形). 用如下的main()函数,求出定义的几个几何体的面积和. *程序输入: *程序输出: */ #inclu

从为什么要将基类的析构函数定义为虚函数谈起~~

 首先,做一个最简单的实验,在电脑上运行下面的代码,将会产生运行错误,这或许会使你百思不得其解: #include <iostream> using namespace std; class Base { private: int a; public: ~Base(){cout << "Base dtor..." << endl;} }; class Derived : public Base { private: int b; public: ~D