首页 > 编程语言 >C++ delete进行了什么操作

C++ delete进行了什么操作

时间:2022-09-01 15:33:40浏览次数:53  
标签:std C++ 置空 析构 操作 delete

#include<iostream>

class A{
public:
        void t(){
                std::cout<< "hello world!" << std::endl;
        }
        ~A(){
                std::cout<< "调用析构函数" << std::endl;
        }
        int a;
};

int main(){
        A *p = new A;
        p->a = 2;
        delete p;
        p->t();
        std::cout << "p->a:" << p->a << std::endl;

        return 0;
}

输出:

调用析构函数
hello world!
p->a:0

delete p操作首先会调用p指向对象的析构函数,然后将成员变量a置空,但是delete操作并没有将p所指向的内存全部置空,这就是为什么依然可以通过p->t()和p->a访问成员的原因。

还需要注意的是:delete操作并没有将t()删除,因为t()是所有对象共有的。

标签:std,C++,置空,析构,操作,delete
From: https://www.cnblogs.com/codingbigdog/p/16646690.html

相关文章

  • Mysql基本操作
    mysql数据库管理软件底层还是文件操作不用IO流使用sql语言数据库database表table列column数据datacmd控制台里操作-uroot-pshowdatabases;展示所有数据库;created......
  • 【C++】Debugging Segmentation Faults
     背景linux下的程序,在遇到空指针解引用、栈错误等原因崩溃时,bash会输出一条:Segmentationfault(coredump)如果你看到coredumped字样,并且在目录下也找到了一个叫co......
  • 在 C# CLR 中学习 C++ 之了解 namespace
    一:背景相信大家在分析dump时,经常会看到WKS和SRV这样的字眼,如下代码所示:00007ffa`778a07b8coreclr!WKS::gc_heap::segment_standby_list=0x00000000`000000000......
  • Appium - 模拟手机滑动操控的操作
    在模拟“滑动操控”的时候,使用的方法就是swipe(),该方法的参数说明如下:start_x:起始横坐标start_y:起始纵坐标end_x:结束时横坐标end_y:结束时纵坐标duration:滑动持续......
  • # C++ 简单的程序段记时工具
    基于宏定义的几个C++记时工具,实现类似于MATLAB中tic().toc()的功能代码#include<ctime>#definedef_tic(name)clock_tt_##name#definerec_tic(name)t_##name=c......
  • 日常开发记录-elementUI 文件上传假删除,防止删除文件后后悔的操作,无需调用后端删除文
    此篇博客关键是记录这种假删除的思想,后端给的删除接口也不一定非要用。。。上传文件假删除:<template><div><el-uploadclass="upload-demo"ac......
  • c++的类型转换
    1.int转string,函数to_string()x=10;stringm=to_string(x);经测试gccv5.4.0版本不支持,版本v7.5.0支持。判断版本号命令:g++-v同样适用于double,float2.string转int,......
  • 每个程序员都需要知道的操作系统基础知识
    每个程序员都需要知道的操作系统基础知识实际上什么是操作系统?操作系统或操作系统可以理解为您可以在设备上获得的最低控制层。操作系统管理您计算机的内存、进程、软件......
  • js操作技巧
    //返回多个数据可以用数据的形式functiondivision(dividend,divisor){varquotient=dividend/divisor;vararr=[dividend,divisor,quotient]ret......
  • delete和truncate删除的区别
    delete: (1)一行一行的把数据删除,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。 (2)delete是数据操作语言(DML)命令。 (3)delete命令不会影响表结构tr......