析构函数

概念
前面通过构造函数的学习,我们知道一个对象时怎么来的,那一个对象又是怎么没呢的?
析构函数:与构造函数功能相反,析构函数不是完成对象的销毁,局部对象销毁工作是由编译器完成的。而
对象在销毁时会自动调用析构函数,完成类的一些资源清理工作。
特性
析构函数是特殊的成员函数。
其特征如下:

  1. 析构函数名是在类名前加上字符 ~。
  2. 无参数无返回值。
  3. 一个类有且只有一个析构函数。若未显式定义,系统会自动生成默认的析构函数。
  4. 对象生命周期结束时,C++编译系统系统自动调用析构函数。
  typedef int DataType;class SeqList{ public :SeqList (int capacity = 10){_pData = (DataType*)malloc(capacity * sizeof(DataType));assert(_pData); _size = 0;_capacity = capacity;}~SeqList(){if (_pData){free(_pData ); // 释放堆上的空间_pData = NULL; // 将指针置为空_capacity = 0;_size = 0;}}private :int* _pData ;size_t _size;size_t _capacity;};
  1. 关于编译器自动生成的析构函数,是否会完成一些事情呢?下面的程序我们会看到,编译器生成的默认
    析构函数,对会自定类型成员调用它的析构函数。
class String
{public:String(const char* str = "jack"){_str = (char*)malloc(strlen(str) + 1);strcpy(_str, str);}~String(){cout << "~String()" << endl;free(_str);}
private:char* _str;
};
class Person
{private:String _name;int _age;
};
int main()
{Person p;return 0; }

《类和对象》-析构函数相关推荐

  1. 【黑马程序员 C++教程从0到1入门编程】【笔记4】C++核心编程(类和对象——封装、权限、对象的初始化和清理、构造函数、析构函数、深拷贝、浅拷贝、初始化列表、友元friend、运算符重载)

    黑马程序员C++教程 文章目录 4 类和对象(类属性[成员属性],类函数[成员函数]) 4.1 封装 4.1.1 封装的意义(三种权限:public公共.protected保护.private私有)( ...

  2. 初入C++(二)类和对象,构造函数,析构函数

    1.c++类的声明和定义. class student { public: char *name; int age; float score; void say(); }; void student ...

  3. 【跟学C++】C++类与对象—构造函数—析构函数(Study10)

    文章目录 1.面向对象(类与对象) 1.1 类 1.2 对象 1.3 访问之句点运算符(.) 1.4 访问之指针运算符(->) 2.public(公有)和private(私有) 3.构造函数 3 ...

  4. 类和对象1-构造函数、析构函数

    文章目录 类和对象 构造函数 构造函数的特性 const修饰类的成员函数 析构函数 类和对象 如果一个类中我们自己什么成员也没有给出,我们称之为空类.但是要注意的是空类并不是真的什么都没有,任何一个类 ...

  5. 类与对象(中) 构造函数和析构函数

    目录 一.类的6个默认成员函数 二.构造函数 2.1定义 2.2特性 1. 函数名和类名相同: 2. 没有返回值: 3.对象实例化的时候编译器自动调用: 4.可以函数重载. 2.3 无参的构造函数和全 ...

  6. C++基础第三章(使用类和对象)上篇(类的构造函数和析构函数)

    利用构造函数对类对象初始化 在类内如果数据成员是公有的则可以在类内直接进行初始化 #include<iostream> using namespace std; class Time {p ...

  7. 类与对象:类的6个默认成员函数: 构造函数、析构函数、拷贝构造函数、赋值操作符重载、默认拷贝构造与赋值运算符重载的问题、const成员函数、 取地址及const取地址操作符重载

    1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类.任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数. 构造函数 析构函数 拷贝构造函数 赋值操作符重载 const成员函数 ...

  8. C++编程入门系列之十四(类与对象:构造函数和析构函数)

    C++编程入门系列之十四(类与对象:构造函数和析构函数) 鸡啄米上一节中给大家讲解了类的声明.成员的访问控制和对象,今天鸡啄米给大家讲C++编程入门时同样必须掌握的构造函数和析构函数.从上一讲开始已经 ...

  9. C++类和对象成员函数,静态成员,构造函数和析构函数、初始化列表

    类和对象 数据成员的访问 定义成员函数 调用成员函数 私有成员函数 构造函数和析构函数 构造函数成员初始化列表 在构造函数中使用new的注意事项 this指针 const成员函数 运算符重载 友元函数 ...

  10. Python 学习笔记 系统模块 面对对象思想 类和对象 类中的方法与对象 构造函数和析构函数

    一.系统模块: UTC:国际标准时间, 格林尼治天文时间,UTC+8 时间戳:指定时间距离1970.1.1 00:00:00的秒数 time:时间 datetime:日期 calendar:万年历 o ...

最新文章

  1. python爬取网易云音乐_Python 从零开始爬虫(七)——实战:网易云音乐评论爬取(附加密算法)...
  2. python挖坑法实现快排
  3. 基于组块设计执行开放世界等距游戏引擎
  4. Hopsan完全编译构建指南
  5. android 本地数据库sqlite的封装
  6. 【洛谷】P1641 [SCOI2010]生成字符串(思维+组合+逆元)
  7. 不满足于汽车制造,丰田展示仿钢铁侠机器支撑腿架
  8. 令人失望的IE7Beta,仍然不支持Web标准。
  9. 让你人际关系更上一层楼的26条原则
  10. AJAX,JSON,GSON
  11. vue 实现12个月的平铺式日历插件
  12. ROM界面美化基础(framework-res、SystemUI)
  13. 舵机的相关原理与控制原理
  14. Shiro集成Cas单点登录
  15. 蓝屏总结(二)——系统蓝屏及转储方法
  16. DAY1(02-HTML标签(上))
  17. 96---Python 绘制阿基米德螺旋线
  18. 偷得浮生半日闲:手写数字的识别
  19. excel导入基于Easypoi一对多导入(实现合并单元格)
  20. Python学海无涯路【第01回】初始Python

热门文章

  1. Tina编译报错:/usr/bin/ld: skipping incompatible解决方案
  2. BJOI2017 魔法咒语
  3. 基于C++OpenGL实现的小桌茶壶图形绘制
  4. 未火先凉,智能睡眠监测管理平台为何自己先休眠
  5. IntelliJ IDEA 2020.1添加背景图
  6. 工程师淘金:开发Android主攻四大方向
  7. rabbitmq 笔记
  8. 网络邻居访问失败, 提示‘连接失败‘
  9. SD 关于销售环节的折扣、折让、回扣、佣金的介绍
  10. 王争数据结构与算法之美开篇问题整理