#ifndef _HOMEWORK_H_
#define _HOMEWORK_H_
#include <iostream>
#include <cmath>
using namespace std;
//定义一个图形类
class Shap
{
protected:
//周长
double perimeter;
//面积
double area;
public:
//无参构造
Shap();
//析构函数
~Shap();
};
//圆类
class Circle :public Shap
{
private:
double radius;
public:
//无参构造
Circle();
//有参构造
Circle(double r);
//拷贝构造
Circle(const Circle& other);
//获取周长
double getPerimeter()const;
//获取面积
double getArea()const;
};
//矩形类
class Rect :public Shap
{
private:
double width;
double length;
public:
//无参构造
Rect();
//有参构造
Rect(double l, double w);
//拷贝构造
Rect(const Rect& other);
//获取周长
double getPerimeter()const;
//获取面积
double getArea()const;
};
#endif // !_HOMEWORK_H_
#include "homework.h"
Shap::Shap():perimeter(0),area(0)
{
cout << "Shap::无参构造" << endl;
}
Shap::~Shap()
{
cout << "Shap::析构函数" << endl;
}
Circle::Circle():radius(0)
{
cout << "Cricle::无参构造" << endl;
}
Circle::Circle(double r):radius(r)
{
cout << "Circle::有参构造" << endl;
perimeter = 2 * 3.1415926 * radius;
area = 3.1415926 * radius * radius;
}
Circle::Circle(const Circle& other):radius(other.radius)
{
cout << "Circle::拷贝构造函数" << endl;
perimeter = 2 * 3.1415926 * radius;
area = 3.1415926 * radius * radius;
}
double Circle::getPerimeter() const
{
return perimeter;
}
double Circle::getArea() const
{
return area;
}
Rect::Rect():width(0),length(0)
{
cout << "Rect::无参构造" << endl;
}
Rect::Rect(double l, double w):length(l),width(w)
{
cout << "Rect::有参构造" << endl;
perimeter = 2 * (length + width);
area = length * width;
}
Rect::Rect(const Rect& other):width(other.width),length(other.length)
{
cout << "Rect::拷贝构造函数" << endl;
perimeter = 2 * (length + width);
area = length * width;
}
double Rect::getPerimeter() const
{
return perimeter;
}
double Rect::getArea() const
{
return area;
}
#include "homework.h"
int main()
{
Circle c1(5);
cout << "c1: Perimeter = " << c1.getPerimeter() << ", Area = " << c1.getArea() << endl;
Rect r1(4, 6);
cout << "r1: Perimeter = " << r1.getPerimeter() << ", Area = " << r1.getArea() << endl;
Circle c2(c1);
cout << "c2: Perimeter = " << c2.getPerimeter() << ", Area = " << c2.getArea() << endl;
Rect r2(r1);
cout << "r2: Perimeter = " << r2.getPerimeter() << ", Area = " << r2.getArea() << endl;
return 0;
}
面试题 - GitMind
C++ - day4 - GitMind
在线思维导图 - GitMind