作业代码
#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;
}
运行截图
思维导图
模拟面试