c++day5

实现一个图形类(Shape),包含受保护成员属性:周长、面积,

公共成员函数:特殊成员函数书写

定义一个圆形类(Circle),继承自图形类,包含私有属性:半径

公共成员函数:特殊成员函数、以及获取周长、获取面积函数

定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度

公共成员函数:特殊成员函数、以及获取周长、获取面积函数

在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。

cpp 复制代码
#include <iostream>

using namespace std;

class Shape
{
protected:
    float perimeter;  //周长
    float area;//面积

public:
    //无参构造函数
    Shape()
    {
        cout<<"Shape:无参构造"<<endl;
    }
    //有参构造函数
    Shape(float a,float b):perimeter(a),area(b)
    {
        cout<<"Shape:有参构造"<<endl;
    }
    //析构函数
    ~Shape()
    {
        cout<<"Shape:析构函数"<<endl;
    }
    //拷贝构造函数
    Shape(const Shape &other):perimeter(other.perimeter),area(other.area)
    {
        cout<<"Shape:拷贝构造函数"<<endl;
    }
    //定义拷贝赋值函数
    Shape & operator=(const Shape &other)
    {
        if(this != &other)          //确定不是自己给自己赋值
        {
            this->perimeter = other.perimeter;
            this->area = other.area;
        }
        cout<<"Shape: 拷贝赋值函数"<<endl;
        return  *this;             //返回自身引用
    }

    void show()
    {
        cout<<"*******************"<<endl;
        cout<<"该图形的周长为"<<perimeter<<endl;
        cout<<"该图形的面积为"<<area<<endl;
        cout<<"*******************"<<endl;
    }

};
class Circle:public Shape
{
private:
    int radius;
public:
    //无参构造函数
    Circle()
    {
        cout<<"Circle:无参构造"<<endl;
    }
    //有参构造函数
    Circle(int r):radius(r)
    {
        cout<<"Circle:有参构造"<<endl;
    }
    //拷贝构造函数
    Circle(const Circle &other):radius(other.radius)
    {
        cout<<"Circle:拷贝构造函数"<<endl;
    }
    //拷贝赋值函数
    Circle & operator=(const Circle &other)
    {
        if(this != &other)          //确定不是自己给自己赋值
        {
            this->radius = other.radius;
        }
        cout<<"Circle: 拷贝赋值函数"<<endl;
        return  *this;             //返回自身引用
    }
    //析构函数
    ~Circle()
    {
        cout<<"Circle:析构函数"<<endl;
    }
    //获取周长
    using Shape::perimeter;
    float perimeter_get()
    {
        this->perimeter=2*3.14*radius;
        return perimeter;
    }
    //获取面积函数
    using Shape::area;
    float area_get()
    {
        this->area=3.14*radius*radius;
        return area;
    }
};
class Rect:public Shape
{
private:
    int length;
    int hight;
public:
    //无参构造函数
    Rect()
    {
        cout<<"Rect:无参构造"<<endl;
    }
    //有参构造函数
    Rect(int l,int h):length(l),hight(h)
    {
        cout<<"Rect:有参构造"<<endl;
    }
    //拷贝构造函数
    Rect(const Rect &other):length(other.length),hight(other.hight)
    {
        cout<<"Rect:拷贝构造函数"<<endl;
    }
    //拷贝赋值函数
    Rect & operator=(const Rect &other)
    {
        if(this != &other)          //确定不是自己给自己赋值
        {
            this->length = other.length;
            this->hight = other.hight;
        }
        cout<<"Rect: 拷贝赋值函数"<<endl;
        return  *this;             //返回自身引用
    }
    //析构函数
    ~Rect()
    {
        cout<<"Rect:析构函数"<<endl;
    }
    //获取周长
    float perimeter_get()
    {
        this->perimeter=2*(length+hight);
        return this->perimeter;
    }
    //获取面积函数
    float area_get()
    {
        this->area=length*hight;
        return this->area;
    }
};
int main()
{
    Circle c1(5);
    c1.perimeter_get();//获取圆形周长
    c1.area_get();//获取圆形面积
    c1.show();//打印周长面积
    Rect r1(4,5);
    r1.perimeter_get();//获取矩形周长
    r1.area_get();//获取矩形面积
    r1.show();//打印周长面积
    return 0;
}
相关推荐
IT小番茄1 小时前
Kubernetes云平台管理实战:自动加载到负载均衡(七)
算法
笑口常开xpr1 小时前
【C++继承】深入浅出C++继承机制
开发语言·数据结构·c++·算法
让我们一起加油好吗2 小时前
【基础算法】DFS
算法·深度优先
爱学习的小鱼gogo3 小时前
python 矩阵中寻找就接近的目标值 (矩阵-中等)含源码(八)
开发语言·经验分享·python·算法·职场和发展·矩阵
红纸2813 小时前
Subword算法之WordPiece、Unigram与SentencePiece
人工智能·python·深度学习·神经网络·算法·机器学习·自然语言处理
CUMT_DJ4 小时前
从零复现论文(1)——通感一体化实现协作基站分配与资源分配(CBARA)策略
算法·通感一体化
tt5555555555554 小时前
CSDN 教程:C++ 经典字符串与栈算法题逐行详解
c++·算法·哈希算法
_dindong4 小时前
基础算法:滑动窗口
数据结构·学习·算法·leetcode·力扣
Voyager_45 小时前
图像处理踩坑:浮点数误差导致的缩放尺寸异常与解决办法
数据结构·图像处理·人工智能·python·算法
文艺倾年5 小时前
【八股消消乐】手撕分布式协议和算法(基础篇)
分布式·算法