c++&qt day4

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

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

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

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

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

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

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

/*
实现一个图形类(Shape),包含受保护成员属性:周长、面积,
公共成员函数:特殊成员函数书写
在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。
*/

#include <iostream>

#define pi 3.14

using namespace std;


//定义一个图形类
class Shape
{
protected:
    double perimeter;      //周长
    double area;           //面积
public:
    //构造函数
    Shape(){cout<<"Shape:无参构造"<<endl;}               //无参构造
    Shape(double p, double a):perimeter(p),area(a)      //有参构造
    {
        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;
    }

    //移动赋值函数
    Shape &operator=(Shape &&other)
    {
        this->perimeter = move(other.perimeter);
        this->area = move(other.area);

        return *this;
    }
};


/*
定义一个圆形类(Circle),继承自图形类,包含私有属性:半径
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
*/
class Circle:public Shape
{
private:
    double radius;              //半径
public:
    //构造函数
    Circle(){cout<<"Shape:无参构造"<<endl;}               //无参构造
    Circle(double r):radius(r)                             //有参构造
    {
        cout<<"Shape:有参构造"<<endl;
    }

    //拷贝构造函数
    Circle(const Circle &other):radius(other.radius)
    {
        cout<<"Shape:拷贝构造函数"<<endl;
    }

    //拷贝赋值函数
    Circle &operator=(const Circle &other)
    {
        if(this != &other)
        {
            this->radius = other.radius;

        }
        cout<<"Shape:拷贝赋值函数"<<endl;
        return *this;
    }

    //移动赋值函数
    Circle &operator=(Circle &&other)
    {
        this->radius = move(other.radius);

        return *this;
    }

    //求周长函数
    int perimeter(double r)
    {
        double D = 0;
        D = 2*r*pi;

        cout<<"周长 = "<<D<<endl;

        return 0;
    }

    //求面积函数
    int area(double r)
    {
        double C = 0;
        C = r*r*pi;

        cout<<"面积 = "<<C<<endl;

        return 0;
    }

};

/*
定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
*/
class Rect:public Shape
{
private:
    double length;
    double width;
public:
    //构造函数
    Rect(){cout<<"Shape:无参构造"<<endl;}               //无参构造
    Rect(double l, double w):length(l),width(w)                             //有参构造
    {
        cout<<"Shape:有参构造"<<endl;
    }

    //拷贝构造函数
    Rect(const Rect &other):length(other.length),width(other.width)
    {
        cout<<"Shape:拷贝构造函数"<<endl;
    }

    //拷贝赋值函数
    Rect &operator=(const Rect &other)
    {
        if(this != &other)
        {
            this->length = other.length;
            this->width = other.width;
        }
        cout<<"Shape:拷贝赋值函数"<<endl;
        return *this;
    }

    //移动赋值函数
    Rect &operator=(Rect &&other)
    {
        this->length = move(other.length);
        this->width = move(other.width);

        return *this;
    }

    //求周长函数
    int perimeter(double l, double w)
    {
        double D = 0;
        D = 2*(l+w);

        cout<<"周长 = "<<D<<endl;

        return 0;
    }

    //求面积函数
    int area(double l, double w)
    {
        double C = 0;
        C = l*w;

        cout<<"面积 = "<<C<<endl;

        return 0;
    }
};

int main()
{
    Circle c1;
    c1.perimeter(5);
    c1.area(3);

    Rect r1;
    r1.perimeter(4,6);
    r1.area(2.5,6);


    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值