zoukankan      html  css  js  c++  java
  • 析构函数和动态内存管理

    析构函数

    当类的对象撤销时,析构函数被隐式调用。析构函数不是释放内存,而是释放内存前进行扫尾工作。

    对象何时撤销?1,静态分配的,生存期过后撤销。2,动态分配的,delete时撤销。

    析构函数的命名 ~类型( ),析构函数没有形参和返回值。

    一个类只能有一个析构函数,如果程序员不显示的提供析构函数,编译器提供默认的析构函数。

    为包含动态分配的内存的类和使用系统资源的类构造适合的析构函数。

    动态内存管理

    //Cat.h
    #include<string>
    #include<iostream>
    class Cat {
    private:
        std::string name;
        int age;
    public:
        Cat() {
            name = "huahua";
            age = 0;
        }
        Cat(const std::string &name,int age) {
            this->name = name;
            this->age = age;
        }
        ~Cat() {
            std::cout << name << "析构...
    ";
        }
    };
    #include<string>
    #include<cstdlib>
    #include"Cat.h"
    using namespace std;
    int main() {
        double *ptr = new double(3.14);
        delete ptr;//释放单个变量,delete
        ptr = nullptr;//必须置为nullptr
        int *arr = new int[10]();
        //()的意思默认初始化,基本数据类型初始化为0,bool初始化false,
        //指针nullptr,对象调用默认构造函数
        delete[] arr;//释放数组delete[]
        arr = nullptr;
        Cat *c1 = new Cat("mimi", 1);
        delete c1;
        Cat *catArr = new Cat[3]();
        delete[] catArr;
        catArr = nullptr;
        system("pause");
        return 0;
    }

    mimi析构...
    huahua析构...
    huahua析构...
    huahua析构...
    请按任意键继续. . .

  • 相关阅读:
    3.6
    2.26
    2.22
    出差记录(每日食谱)
    关于本博客的样式
    知乎搜索/(引擎)的故事
    【历史/对越自卫反击战】刘立华||我的战地笔记——陵园祭
    如何在Xpath路径中添加变量?如何将字符串传递给Xpath?
    阿里网盘搜索网站汇总
    经济学人下载
  • 原文地址:https://www.cnblogs.com/afreeman/p/8464501.html
Copyright © 2011-2022 走看看