首页 > 编程语言 >【C++】delete

【C++】delete

时间:2022-08-29 23:47:59浏览次数:72  
标签:调用 派生类 C++ 内存 析构 基类 delete

delete是根据指针的类型来调用析构的。当delete派生类对象填充的派生类指针,那么delete这个指针,先调用派生类析构,再调用基类析构。当多态环境下,delete指向派生类对象的基类指针,则出现只调用基类析构,而不调用派生类析构,从而导致内存泄漏。这里产生的问题是,调用的基类析构能不能删除派生类内存呢?感觉关键还是析构函数的执行原理。情形:如果析构是按照内存大小删除指向内存,那么如果派生类所有成员均继承自基类,而没有只属于自己的成员,显然派生类对象和基类对象占用的内存大小是一致的,所以如果此时析构是按照类的大小来删除内存,那么可以正常删除派生类对象。

有待考究

标签:调用,派生类,C++,内存,析构,基类,delete
From: https://www.cnblogs.com/jiayu-code/p/16637846.html

相关文章

  • # 关于C++20Concept(概念)及requires表达式的学习
    关于C++20Concept(概念)及requires表达式的学习Concept(概念)C++20引入了concept以在编译期检查模板实参是否满足指定的约束.如何不用concept进行约束template<typenam......
  • C++性能优化指南 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1Gwc_yVHcJY6trqNodDXLpA点击这里获取提取码《C++性能优化指南》是一本C++代码优化指南。作者精选了他在近30年编程生涯中频......
  • C++ 左值于右值的理解
    定义与区别左值(lvalue,locatorvalue)表示了一个占据内存中某个可识别的位置(也就是一个地址)的对象。即左值指的是可以取地址的变量。区分表达式的左右值属性有一个简......
  • CCF 202009-1 称检测点查询(C++)
    使用结构体struct+自定义sort轻松搞定#include<iostream>#include<bits/stdc++.h>#include<cstdio>usingnamespacestd;intn,X,Y;structpoint{......
  • C++【多线程编程】之【线程安全】
    1.线程安全是什么?在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。2.什么情况......
  • delete、drop和truncate三者区别
    delete、drop和truncate三者区别相同点:1、都有删除表的功能;不同点:1、delete、truncate仅仅删除表里面的数据;drop会把表的结构也删除掉2、delete是DML语句,操作完了,还可......
  • C++各个版本新增对于算法竞赛有用特性
    C++各个版本新增对于算法有用特性C++11auto与decltype类型推导(摘自程序喵大人)autoauto可以让编译器在编译器就推导出变量的类型,话不多说上代码:autoa=10;//10是in......
  • c++ 在项目中创建DLL,并调用
    创建DLL分为两种方法,先介绍第一种一、创建DLL(1)//dll.h#pragmaonce//dll.h#ifndefDLL_H_#defineDLL_H_voidprinthello();voidcallPython();extern"C"_de......
  • C++ 多维数组的访问
    1.可以把一维数组想象成一排士兵,把二维数组想象成一个士兵方阵,把三维数组想象成多个士兵方阵。这样,当你要找其中的一个士兵时,你只要知道他在哪个方阵(从0、1、2中选择),在哪......
  • C/C++全国交通咨询模拟系统
    C/C++全国交通咨询模拟系统全国交通咨询模拟【问题描述】处于对不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客......