c++中一个简单的继承问题,求教!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/03 12:53:01
#include <iostream>
#include<cmath>
using namespace std;
class circle
{
public:
circle(double r=0){radius=r;}
double getround(double r){return 2*3.14*radius;}
double getarea(double r){return 3.14*r*r;}
private:
double radius;
};
class cylinder:public circle
{
cylinder(double h=0):circle(r)
{
height=h;
}
double getarea(double r,double h){return 2*3.14*r*r+2*3.14*r*h;)
double getvolume(double r,double h){return 3.14*r*r*h;)
private:
height;
};
double main()
{
circle A;
cylinder B;
cin>>A.radius;
cin>>B.height;
cout<<"圆的面积:";

getarea(radius);
cout<<endl;
cout<<"圆的周长:";
A.getround (radius);
cout<<endl;
cout<<"圆柱的面积:";
B.getarea(radius,height);
cout<<endl;

主要有以下几点:
1.主函数中不能直接访问私有成员,可以采用set函数的形式
2.cylinder类构造函数少参数,
3.circle类和cylinder类的成员函数完全可以“看到”捆绑调用它们的对象的半径和高,没必要把这些作为参数传给这些成员函数

#include <iostream>
#include<cmath>
using namespace std;
class circle
{
public:
circle(double r=0){radius=r;}
double getround(){return 2*3.14*radius;}
double getarea(){return 3.14*radius*radius;}
void setR(double a){
radius = a;
}
protected:
double radius;
};
class cylinder:public circle
{
public:
cylinder(double r = 0,double h=0):circle(r)
{
height=h;
}
double getarea(){return 2*3.14*radius*radius+2*3.14*radius*height;}
double getvolume(){return 3.14*radius*radius*height;}
void setR(double a){
radius = a;
}
void setH(double a){
height = a;
}
private:
double height;
};
int main()
{
circle A;
cylind