• C++析构函数


    析构函数是构造函数的互补:当对象超出作用域或动态分配的对象被删除时,将自动调用析构函数。
    析构函数可用于释放对象时构造或在对象的生命期中所获取的资源。
    不管类是否定义了自己的析构函数,编译器都自动执行类中非static 数据成员的析构函数。

    1、析构函数的特点

    (1)、析构函数没有返回值和参数列表

    (2)、析构函数不能重载

    (3)、析构函数由系统自动调用,不能显式调用

    (4)、析构函数可以是inline函数

    (5)、析构函数应该设置为类的公有成员

    (6)、每个类有应该有一个析构函数,如果没有显式定义,那么系统会自动生成一个默认的析构函数

    #include <iostream>
    using namespace std;
    
    class ExampleA
    {
    public:
        ~ExampleA(){cout << "ExampleA::Deconstructor" << endl;}
    };
    
    class ExampleB
    {
    public:
        ~ExampleB();
    };
    ExampleB::~ExampleB()
    {
        cout << "ExampleB::Deconstructor" << endl;
    }
    
    int main(void)
    {
        ExampleA a;
        ExampleB b;
    
        return 0;
    }

    2、析构函数的调用顺序

    http://www.cnblogs.com/LubinLew/p/Cpp-CallOrderOfConstructorAndDeconstructor.html

    3、虚析构函数的作用

    作用是当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用,

    总而言之,就是在实现多态的时候不造成内存泄露。

    当然,并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,

    编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的存储空间。所

    以,只有当一个类被用来作为基类的时候,才把析构函数写成虚函数。

    http://blog.csdn.net/starlee/article/details/619827

  • 相关阅读:
    [bzoj3694]最短路
    [bzoj3172][Tjoi2013]单词
    [bzoj2243][SDOI2011]染色
    [bzoj1036][ZJOI2008]树的统计Count
    [学习笔记]树链剖分
    [bzoj4552][Tjoi2016][Heoi2016]排序
    [51nod1515]明辨是非
    [51nod1685]第k大区间
    [日常训练]training
    BZOJ3811: 玛里苟斯
  • 原文地址:https://www.cnblogs.com/LubinLew/p/Cpp-DeconstructorFunction.html
Copyright © 2020-2023  润新知