9月12日作业

作业代码

cpp 复制代码
#include <iostream>

using namespace std;

class Shape
{
protected:
    double cir;
    double area;
public:
    //无参构造
    Shape() {cout<<"无参构造"<<endl;}
    //有参构造
    Shape(double c, double a):cir(c), area(a){cout<<"有参构造"<<endl;}
    //析构函数
    ~Shape(){cout<<"析构函数"<<endl;}
    //拷贝构造
    Shape(const Shape&other):cir(other.cir), area(other.area)
    {
        cout<<"拷贝构造"<<endl;
    }
    //拷贝赋值
    Shape& operator=(const Shape& other)
    {
        if(this != &other)
        {
            this->cir = other.cir;
            this->area = other.area;
            cout<<"拷贝赋值"<<endl;
        }
        return *this;
    }
    //移动赋值
    Shape& operator=(Shape&& other)
    {
        this->cir = other.cir;
        this->area = other.area;
        return *this;
    }
};

class Circle:public Shape
{
private:
    double rad;
public:
    //无参构造
    Circle() {cout<<"无参构造"<<endl;}
    //有参构造
    Circle(double r):rad(r){cout<<"有参构造"<<endl;}
    //析构函数
    ~Circle(){cout<<"析构函数"<<endl;}
    //拷贝构造
    Circle(const Circle&other):rad(other.rad){cout<<"拷贝构造"<<endl;}
    //拷贝赋值
    Circle& operator=(const Circle& other)
    {
        if(this != &other)
        {
            this->rad = other.rad;
            cout<<"拷贝赋值"<<endl;
        }
        return *this;
    }
    //移动赋值
    Circle& operator=(Circle&& other)
    {
        this->rad = other.rad;
        return *this;
        cout<<"移动赋值"<<endl;
    }
    //获取周长
    double get_cir()
    {
        Shape::cir = rad*2*3.14;
        return Shape::cir;
    }
    //获取面积
    double get_area()
    {
        Shape::area = rad*rad*3.14;
        return Shape::area;
    }
};

class Rect:public Shape
{
private:
    double len;
    double width;
public:
    //无参构造
    Rect() {cout<<"无参构造"<<endl;}
    //有参构造
    Rect(double l, double w):len(l), width(w){cout<<"有参构造"<<endl;}
    //析构函数
    ~Rect(){cout<<"析构函数"<<endl;}
    //拷贝构造
    Rect(const Rect&other):len(other.len), width(other.width){cout<<"拷贝构造"<<endl;}
    //拷贝赋值
    Rect& operator=(const Rect& other)
    {
        this->len = other.len;
        this->width = other.width;
        return *this;
    }
    //移动赋值
    Rect& operator=(Rect&& other)
    {
        this->len = other.len;
        this->width = other.width;
        return *this;
    }
    //获取周长
    double get_cir()
    {
        Shape::cir = (len+width)*2;
        return Shape::cir;
    }
    //获取面积
    double get_area()
    {
        Shape::area = len*width;
        return Shape::area;
    }
};

int main()
{
    Circle c(3);
    cout<<"c_cir = "<<c.get_cir()<<endl;
    cout<<"c_area = "<<c.get_area()<<endl;
    Rect r(3.5, 5.5);
    cout<<"r_cir = "<<r.get_cir()<<endl;
    cout<<"r_area = "<<r.get_area()<<endl;

    return 0;
}

运行截图

思维导图

模拟面试

相关推荐
凯瑟琳.奥古斯特25 分钟前
力扣1016高效解法:剪枝优化技巧
开发语言·c++·算法·leetcode·职场和发展
xiangyun611 小时前
C++ priority_queue 底层:手撕二叉堆与 Top K 问题
c++·算法·面试·stl·1024程序员节
坤坤子吖1 小时前
C++继承:友元、静态成员、多继承与组合
开发语言·c++·笔记·学习·1024程序员节
qz_Serene2 小时前
练习算法题:双指针 -cpp
c++·算法·leetcode·1024程序员节
扶尔魔ocy2 小时前
【C++开发】从裸指针到智能指针
c++·智能指针·1024程序员节
思麟呀4 小时前
BTree的原理与 C++ 完整实现
c语言·数据结构·c++·算法·1024程序员节
jimy14 小时前
C++ 中 xvalue 的 identity 存在哪里?和 lvalue 的 identity 有什么区别?
开发语言·c++·1024程序员节
xiaoye-duck5 小时前
《C++ 项目:手写大模型接入 SDK》Provider分析与实现
开发语言·c++·语言模型
会编程的小孩5 小时前
qt_day1
c++
INGNIGHT6 小时前
377.组合总和 Ⅳ(背包)
c++·算法·1024程序员节