(C++)C++类继承中的构造函数和析构函数
2023-09-14 09:00:36 时间
思想:
在C++的类继承中,
建立对象时,首先调用基类的构造函数,然后在调用下一个派生类的构造函数,依次类推;
析构对象时,其顺序正好与构造相反;
例子:
#include <iostream> using namespace std; class Shape{ public: void Draw() {cout<<"Base::Draw()"<<endl;} void Erase() {cout<<"Base::Erase()"<<endl;} Shape() {Draw();} ~Shape() {Erase();} }; //------------------------------------------------- class Polygon:public Shape{ public: Polygon() {Draw();} void Draw() {cout<<"Polygon::Draw()"<<endl;} void Erase() {cout<<"Polygon Erase()"<<endl;} ~Polygon() {Erase();} }; //-------------------------------------------------- class Rectangle:public Polygon{ public: Rectangle() {Draw();} void Draw() {cout<<"Rectangle::Draw()"<<endl;} void Erase() {cout<<"Rectangle Erase()"<<endl;} ~Rectangle() {Erase();} }; //-------------------------------------------------- class Square:public Rectangle{ public: Square() {Draw();} void Draw() {cout<<"Square::Draw()"<<endl;} void Erase() {cout<<"Square Erase()"<<endl;} ~Square() {Erase();} }; //-------------------------------------------------- int main(){ Polygon c; Rectangle s; Square t; cout<<"------------------------------------------"<<endl; return 0; }
结果:
相关文章
- VS2022 C++ const char * 类型的实参与LPCWSTR类型的形参不兼容
- C++STL容器string
- Effective C++第17条:要在单独的语句中使用智能指针来存储由new创建的对象
- EasyC++82,继承和动态内存分配
- C/C++学习路线
- 贪心c++(结合LeetCode例题)
- 深入理解C++11_c++ string char
- C++11 decltype 的用法
- 继承用法大全——c++面向对象编程(必看)
- C/C++ 实现常用的线程注入
- 【C++ 语言】面向对象 ( 继承 | 重写 | 子类调用父类方法 | 静态多态 | 动态多态 | 虚函数 | 纯虚函数 )
- 【C++ 语言】智能指针 引入 ( 内存泄漏 | 智能指针简介 | 简单示例 )
- 【C++】继承
- [C++]类与对象中篇
- 【C++】你不得不爱的——继承
- Linux基础:讲解Linux C++多线程同步的方式
- C++三种继承方式详解编程语言
- C++运算符重载的概念和原理
- C++类的复合和继承关系(C++继承类和封闭类的关系)
- C++11 Lambda表达式(匿名函数)详解
- C++按值传递详解
- C++求数组中的最大值和最小值(带源码)
- C++继承和组合(无师自通)
- C++ STL流缓冲区迭代器(streambuf_iterator)
- Microsoft Visual C++ 2019 v14.26.28720.3 官方版
- C++多重继承和虚拟继承对象模型、效率分析
- C++实现不能被继承的类实例分析