#include <iostream>
using namespace std;
class Shape
{
protected:
double circumference; //周长
double area; //面积
public:
Shape(){cout << "Shape::无参构造" << endl;}
~Shape(){cout << "Shape::析构函数:" << this << endl;}
Shape(const Shape &other):circumference(other.circumference),area(other.area)
{
cout << "拷贝构造函数" << endl;
}
Shape & operator= (const Shape &other)
{
if(this != &other)
{
this->circumference = other.circumference;
this->area = other.area;
}
cout << "Shape::拷贝赋值函数" << endl;
return *this;
}
};
class Circle : public Shape
{
private:
double radius; //半径
public:
Circle(){cout << "Rect::无参构造" << endl;}
Circle(double radius):radius(radius)
{
cout << "Circle::有参构造" << endl;
}
~Circle(){cout << "Circle::析构函数:" << this << endl;}
Circle & operator= (const Circle &other)
{
if(this != &other)
{
this->radius = other.radius;
}
cout << "Circle::拷贝赋值函数" << endl;
return *this;
}
void get_circumference()
{
circumference = 2 * radius * 3.14;
cout << "圆形的周长是: " << circumference << endl;
}
void get_area()
{
area = radius * radius * 3.14;
cout << "圆形的面积是: " << area << endl;
}
};
class Rect : public Shape
{
private:
double length;
double width;
public:
Rect(){cout << "Rect::无参构造" << endl;}
Rect(double length,double width):length(length),width(width)
{
cout << "Rect::有参构造" << endl;
}
~Rect(){cout << "Rect::析构函数:" << this << endl;}
Rect & operator= (const Rect &other)
{
if(this != &other)
{
this->length = other.length;
this->width = other.width;
}
cout << "Rect::拷贝赋值函数" << endl;
return *this;
}
void got_circumference()
{
circumference = 2 * (length + width);
cout << "矩形的周长是: " << circumference << endl;
}
void got_area()
{
area = length * width;
cout << "矩形的面积是: " << area << endl;
}
};
int main()
{
Circle c(5);
Rect r(10,15);
c.get_area();
c.get_circumference();
r.got_area();
r.got_circumference();
return 0;
}
DAY47
最新推荐文章于 2024-08-19 18:41:12 发布