C++ 继承问题 看一看吧看一下

编写程序,定义具有继承关系的圆和圆柱体类,前者的数据成员中包含半径,函数成员包含计算圆面积,后者的数据成员有圆柱体高度,函数成员有计算表面积和体积,两类中都包含显示参数的函数。

img

你题目的解答代码如下:


#include<iostream>
#include <cstring>
using namespace std;

class CCircle{
    protected:
        int r;
    public:
        CCircle(int r1):r(r1){        }
        float Area(){
            return 3.14*r*r;
        }
        void print(){
            cout<<"半径:"<<r<<endl;
            cout<<"面积:"<<Area()<<endl;
        }
};
class CCylinder:public CCircle{
    protected:
        int h;
    public:
        CCylinder(int r1,int h1):CCircle(r1),h(h1){        }
        float Volume(){
            return 3.14*r*r*h;
        }
        void print(){
            cout<<"半径:"<<r<<endl;
            cout<<"高度:"<<h<<endl;
            cout<<"面积:"<<Area()<<endl;
            cout<<"体积:"<<Volume()<<endl;
        }
};
int main(){
    int r,h;
    cin>>r;
    CCircle c1(r);
    c1.print();
    cin>>r>>h;
    CCylinder c2(r,h);
    c2.print();
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img


#include<iostream>
#include <cstring>
using namespace std;
class CPoint{
    protected:
        int x,y;
    public:
        CPoint(int x1,int y1):x(x1),y(y1){    }
        
}; 
class CCircle:public CPoint{
    protected:
        int r;
    public:    
        CCircle(int x1,int y1,int r1):CPoint(x1,y1),r(r1){        }
        float Area(){
            return 3.14*r*r;
        }
        void print(){
            cout<<"Circle:("<<x<<","<<y<<"),"<<r<<endl;
            cout<<"Area:"<<Area()<<endl;
        }
};
class CCylinder:public CCircle{
    protected:
        int h;
    public:
        CCylinder(int x1,int y1,int r1,int h1):CCircle(x1,y1,r1),h(h1){        }
        float Volume(){
            return 3.14*r*r*h;
        }
        void print(){
            cout<<"Cylinder:("<<x<<","<<y<<"),"<<r<<","<<h<<endl;
            cout<<"Volume:"<<Volume()<<endl;
        }
};
int main(){
    int x,y,r,h;
    cin>>x>>y>>r;
    CCircle c1(x,y,r);
    c1.print();
    cin>>x>>y>>r>>h;
    CCylinder c2(x,y,r,h);
    c2.print();
    return 0;
}