代码
circle.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;
}