实现一个图形类(Shape),包含受保护成员属性:周长、面积,
公共成员函数:特殊成员函数书写
定义一个圆形类(Circle),继承自图形类,包含私有属性:半径
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。
- #include
-
- using namespace std;
-
- //图形类
- class Shape
- {
- protected:
- double len;
- double Area;
-
- public:
- //无参构造
- Shape():len(0),Area(0)
- {
- cout<<"Shape:无参构造"<
- }
-
- //有参构造
- Shape(int l,int a):len(l),Area(a)
- {
- cout<<"Shape:有参构造"<
- }
-
- //析构函数
- ~Shape()
- {
- cout<<"析构函数"<
- }
-
- //拷贝构造函数
- Shape(const Shape &other):len(other.len),Area(other.Area)
- {
- cout<<"拷贝构造函数"<
- }
-
- //拷贝赋值函数
- Shape &operator=(const Shape &other)
- {
- this->len=other.len;
- this->Area=other.Area;
- return *this;
- }
- };
-
- //圆形类
- class Circle:public Shape
- {
- private:
- double R;
- public:
- //无参构造
- Circle()
- {
- cout<<"Circle:无参构造"<
- }
-
- //有参构造
- Circle(double r):R(r)
- {
- len=2*3.14*r;
- Area=r*r*3.14;
- cout<<"Circle:有参构造"<
- }
-
- //析构函数
- ~Circle()
- {
- cout<<"析构函数"<
- }
-
- //拷贝构造函数
- Circle(Circle &other):Shape(other.len,other.Area),R(other.R)
- {
- cout<<"拷贝构造函数"<
- }
-
- //拷贝赋值函数
- Circle &operator=(const Circle &other)
- {
- this->R=other.R;
- this->len=other.len;
- this->Area=other.Area;
- return *this;
- }
-
- //求周长
- double c_len()
- {
- return len;
- }
-
- //求面积
- double c_area()
- {
- return Area;
- }
-
- };
-
- //矩形类
- class Rect:public Shape
- {
- private:
- double cha;
- double gao;
- public:
- //无参构造
- Rect()
- {
- cout<<"Rect:无参构造"<
- }
-
- //有参构造
- Rect(double c,double g):cha(c),gao(g)
- {
- len=2*(c+g);
- Area=c*g;
- cout<<"Rect:有参构造"<
- }
-
- //析构函数
- ~Rect()
- {
- cout<<"析构函数"<
- }
-
- //拷贝构造函数
- Rect(const Rect &other):Shape(other.len,other.Area),cha(other.cha),gao(other.gao)
- {
- cout<<"拷贝构造函数"<
- }
-
- //拷贝赋值函数
- Rect &operator=(const Rect &other)
- {
- len=other.len;
- Area=other.Area;
- cha=other.cha;
- gao=other.gao;
- return *this;
- }
-
- //求周长
- double r_len()
- {
- return cha*2+gao*2;
- }
-
- //求面积
- double r_area()
- {
- return cha*gao;
- }
-
- };
-
- int main()
- {
- Circle y(5);
- cout<<"这个圆形的周长为"<
c_len()< - cout<<"这个圆形的面积为"<
c_area()< -
- Rect r(5,8);
- cout<<"这个矩形的周长为"<
r_len()< - cout<<"这个矩形的面积为"<
r_area()< - return 0;
- }
-
相关阅读:
DataGridView控件的使用
Linux epoll 编程些许浅谈
LeetCode 2609. 最长平衡子字符串
解决zip文件中文乱码问题
模拟验证码发送
如何使用程序【爬取视频】,完成中秋节大制作
快速入门vuex!!
Linux使用man指令出现No manual entry for fork
vue2基础知识-2
Mybatis分页
-
原文地址:https://blog.csdn.net/2201_75732711/article/details/132839614