圓與圓柱(C++繼承)

代碼

ciecle.h

// circle.h
#ifndef _CIRCLE__H__
#define _CIRCLE__H__
const double PI=3.1415926; 
class Circle
{
public:
    Circle(double r);
    ~Circle();
    void SetRadius(double r);
    double GetRaidus() const;
    double GetArea() const;
    void Print () const;
private:
    double raidus;
};

class Cylinder:Circle
{
public:
    Cylinder(double r, double h);
    ~Cylinder();
    void SetHeight(double h);
    double GetHeight() const;
    void SetRadius(double r);
    double GetRaidus() const;
    double GetArea() const;
    double GetVolume() const;
    void Print() const;
private:
    double height;
};
#endif
  • Cylinder 是對於 Circle的繼承。
  • 此處是private繼承,通過調用Circle中的方法,才能修改Circle的私用成員。

circle.cpp

// circle.cpp
#include "circle.h"
#include <iostream>
using namespace std;
Circle:: Circle(double r)
{
    raidus = r;
}

Circle:: ~Circle(){};
void Circle:: SetRadius(double r)
{
    raidus = r;
}

double Circle:: GetRaidus() const
{
    return raidus;
}

double Circle:: GetArea() const
{
    return raidus * raidus * PI;
}

void Circle:: Print() const
{
    cout << "r=" << raidus << "  area = " << GetArea()<<endl;
}

Cylinder:: Cylinder(double r, double h): Circle(r)
{
    height = h;
}

Cylinder:: ~Cylinder(){};

void Cylinder:: SetHeight(double h)
{
    height = h;
}

double Cylinder:: GetHeight() const
{
    return this->height;
}

void Cylinder:: SetRadius(double r)
{
    Circle::SetRadius(r);
}

double Cylinder:: GetRaidus() const
{
    return Circle::GetRaidus();
}

double Cylinder:: GetArea() const
{
    return (2*PI * GetRaidus() * GetRaidus()+2*PI*GetRaidus()*height);
}

double Cylinder:: GetVolume() const
{
    return (PI * GetRaidus() * GetRaidus() *height);
}

void Cylinder:: Print() const
{
    cout << "r = " << GetRaidus() << "  ";
    cout << "heught = " << GetHeight() << "  ";
    cout << "area = " << GetArea() << "  ";
    cout << "volume = " << GetVolume() << endl;
}
  • 類的實現。沒有什麼好說的。

main.cpp

// main.cpp
#include "circle.h"
#include <iostream>
using namespace std;

void test ()
{
    Circle circle(5);
    circle.Print();
    circle.SetRadius(10);
    circle.Print();
    Cylinder cylinder(5, 5);
    cylinder.Print();
    cylinder.SetRadius(10);
    cylinder.SetHeight(10);
    cylinder.Print();   
}

int main(int argc, char const *argv[])
{
    test();
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章