每天打卡一小时 第二十二天

【CPP0029】以圆类Circle及立体图形类Solid为基础设计圆锥类Cone
分数 10
作者 C++多态编程
单位 石家庄铁道大学

以点类Point及平面图形类Plane为基类公有派生圆类Circle,再以圆类Circle及立体图形类Solid为基类公有派生圆锥类Cone,main(void)函数完成对圆锥类Cone的测试。

第一部曲 自然语言

构造

利用基类函数进行赋值,特有的数据 自己赋值

拷贝构造

传入对象 特有的数据 自己赋值

析构

直接输出

公有函数

显示

注意格式 利用公有函数输出

设置函数

什么等于什么

返回函数

return

 计算函数

计算

第三部曲 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
class Circle:public Point,public Plane
{
 
    private:
    double radius;
    public:
    Circle(double a=0,double b=0,double r=0)
    {
    setX(a);
    setY(b);
    radius=r;
    cout<<"Circle Constructor run"<<endl;
    }
     
    Circle (const Circle &p):Point(p)
    {
    radius=p.radius;
    cout<<"Circle CopyConstructor run"<<endl;
    }
     
    ~Circle()
    {
    cout<<"Circle Destructor run"<<endl;
    }
     
    void setR(double r);
    double getR()const;
    double area()const;
    double length()const;
    void show()const;
};
static const double PI=3.14159;
void Circle:: setR(double r)
{
    radius=r;
}
double Circle:: getR()const
{
    return radius;
}
double Circle:: area()const
{
    return PI*radius*radius;
}
double Circle:: length()const
{
    return PI*2*radius;
}
void Circle:: show()const
{
    cout<<"Circle(Point(X="<<getX()<<",Y="<<getY()<<")"<<",Radius="<<radius<<")";
}
class Cone:public Circle,public Solid
{
    private:
    double height;
    public:
    Cone(double x=0,double y=0,double r=0,double h=0):Circle(x,y,r)
    {
    height=h;
    cout<<"Cone Constructor run"<<endl;
    }
    Cone(const Cone &p):Circle(p)
    {
    height=p.height;
    cout<<"Cone CopyConstructor run"<<endl;
    }
    ~Cone()
    {
    cout<<"Cone Destructor run"<<endl;
    }
    void setH(double h);
    double getH()const;
    double s_Area()const;
    double volume()const;
    void show()const;
};
void Cone::setH(double h)
{
    height=h;
}
double Cone::getH()const
{
    return height;
}
double Cone::volume()const
{
    return PI*getR()*getR()*height/3;
}
double Cone::s_Area()const
{
    return PI*getR()*getR()+PI*sqrt(height*height+getR()*getR())*getR();
}
void Cone::show()const
{
    cout<<"Cone(Circle(Point(X="<<getX()<<",Y="<<getY()<<"),Radius="<<getR()<<"),Height="<<height<<")";
}

  第四部曲 总结

在类的编写中 逐渐得心应手 已经不像之前一样要写很长时间了 

posted @   财神给你送元宝  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示