美文网首页
C++之对象的销毁

C++之对象的销毁

作者: 程序手艺人 | 来源:发表于2018-03-26 08:28 被阅读30次
  • 生活中对象都是被初始化后才上市的
  • 生活中的对象被销毁前会做一些工作

问题1 : C++中如何清理需要销毁的对象?

  • 一般而言,需要销毁的对象都应该做清理
  • 解决方案
    • 为每个类都提供一个public的free函数
    • 对象不再需要时立即调用free函数进行清理
class Test
{
    int* p;
public:
    Test() { p = new int ;};
    void free() {delete p ;};
};
  • 存在的问题

    • free只是一个普通的函数, 必须显示的调用
    • 对象销毁前没有做清理, 很可能造成资源泄露

问题2: C++编译器是否能够自动调用某个特殊的函数进行对象的清理?

析构函数

  • C++的类中可以定义一个特殊的清理函数

    • 这个特殊的清理函数叫做析构函数
    • 析构函数的功能与构造函数相反
  • 定义 : ~ClassName()

    • 析构函数没有参数也没有返回值类型声明
    • 析构函数在对象销毁时自动调用
  • 析构函数的定义准则

    • 当类中自定义了构造函数,并且构造函数中使用了系统资源(如:内存申请,文件打开,等)则需要自动以析构函数.

小结

  • 析构函数是对象销毁时进行清理的特殊函数
  • 析构函数在对象销毁时自动被调用
  • 析构函数是对象释放系统资源的保障

相关文章

  • C++之对象的销毁

    生活中对象都是被初始化后才上市的 生活中的对象被销毁前会做一些工作 问题1 : C++中如何清理需要销毁的对象? ...

  • C++中的对象销毁

    对象的销毁 一般而言,需要销毁的对象都应该做清理 解决方案为每个类都提供一个public的free函数对象不再需要...

  • C++ 中的new 和 java中的 new

    C++:创建实例 new创建的类对象需要指针来接收,该类对象使用完毕后需要使用delete销毁 new创建的对象使...

  • 创建和销毁对象

    1、何时以及如何创建对象? 2、何时以及如何避免创建对象? 3、如何确保它们能够适时地销毁,以及如何管理对象销毁之...

  • 慕课网-C++远征之封装篇(下)-学习笔记

    C++远征之封装篇(下) c++封装概述 类 & 对象 对象+数据成员 = 对象成员 对象 + 数组 = 对象数组...

  • C/C++学习笔记丨C++中的动态内存与智能指针

    在C++中,我们通过new(在动态内存中为对象分配空间并初始化对象)和delete(销毁该对象,并释放内存)直接分...

  • JAVA中的垃圾回收

    简介 在C/C++,程序员负责对象的创建和销毁,但等创建后使用完,常常忘记了去销毁,这样就会导致接下里去创建新的对...

  • 优雅地创建和销毁对象

    创建和销毁对象概述 何时以及如何创建对象 何时以及如何避免创建对象 如何确保对象适时地销毁 如何管理对象销毁之前必...

  • Python:重载构造方法

    对于使用过C++的人来说,构造函数与析构函数不会陌生。构造函数在对象创建时被调用,析构函数在对象被销毁时被调用。而...

  • C++的new和delete详解

    new和delete的内部实现 C++中如果要在堆内存中创建和销毁对象需要借助关键字new和delete来完成。比...

网友评论

      本文标题:C++之对象的销毁

      本文链接:https://www.haomeiwen.com/subject/ktslcftx.html