c++代码问题继承与派生


 
#include<iostream>
#include<cmath>
using namespace std; 
const double Pi=3.14;
class Circle
{
    public:
        Circle(double r){
            radius=r;
        } 
        double Radius()
        {
            return radius;
        }
        ~Circle(){}
        private:
            double radius;
};
class Column : public Circle
{
     public:
        Column(double r, double h):Circle(r)
        {high = h;}
 double volume()
 {
  return high*Pi*pow(Radius(), 2);
 }
 double surface_area()
 {
  return 2*Pi*pow(Radius(), 2)+2*Pi*Radius()*high;
 }
 ~Column(){}
private:
 double high;
};
 
int main()
{
 double r1,r2,h;
 cin >> r1 ;   
 cin >> r2;
 cin >> h;
 Column C(r2, h);
 cout<< C.volume() << endl;
 return 0;
} 

请问怎么用圆类的成员函数输出圆的面积,谢谢!

改成下面这样就可以了


#include<iostream>
#include<cmath>
using namespace std;
const double Pi = 3.14;
class Circle
{
public:
    Circle(double r) {
        radius = r;
    }
    double Radius()
    {
        return Pi*pow(radius,2);  //返回圆面积
    }
    ~Circle() {}
private:
    double radius;
};
class Column : public Circle
{
public:
    Column(double r, double h) :Circle(r)
    {
        high = h;
    }
    double volume()
    {
        return high * Pi * pow(Radius(), 2);
    }
    double surface_area()
    {
        return 2 * Pi * pow(Radius(), 2) + 2 * Pi * Radius() * high;
    }
    ~Column() {}
private:
    double high;
};

int main()
{
    double r1, r2, h;
    cin >> r1;  //输入圆半径
    //cin >> r2;
    //cin >> h;
    //Column C(r2, h);
    Circle C1(r1);
    //cout << C.volume() << endl;
    cout << C1.Radius() << endl;
    return 0;
}

你的要求好奇怪, 你的圆里面没有求面积的函数,只有返回半径的函数, 那就直接返回半径,然后用PI 乘以 R的平方。而且你为啥要输入两个半径?

 
 
#include<iostream>
#include<cmath>
using namespace std; 
const double Pi=3.14;
class Circle
{
    public:
        Circle(double r){
            radius=r;
        } 
        double Radius()
        {
            return radius;
        }
        ~Circle(){}
        private:
            double radius;
};
class Column : public Circle
{
     public:
        Column(double r, double h):Circle(r)
        {high = h;}
 double volume()
 {
  return high*Pi*pow(Radius(), 2);
 }
 double surface_area()
 {
  return 2*Pi*pow(Radius(), 2)+2*Pi*Radius()*high;
 }
 ~Column(){}
private:
 double high;
};
 
int main()
{
     double r1,r2,h;
     cin >> r1 ;   
     cin >> r2;
     cin >> h;
     Column C(r2, h);
     cout<< C.Radius() * C.Radius() * Pi << endl;
     return 0;
} 
```c++


```