c++&qt day4

发布于:2023-09-14 ⋅ 阅读:(93) ⋅ 点赞:(0)

实现一个图形类(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;
}

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到