`

delete与对象、数组

阅读更多

删除对象有两种:
1、delete
2、delete[]

对象又分基础类型,和自定义对象

基础类型的delete与delete[]执行的现象一样,
只删除了第一个对象,
而且来删除对象不支持指针偏移。


对于用户自定义对象,支持指针偏移,
通过偏移指针来删除对象,但是这样将可能造成混乱:
删除了后,指向地址要附0,首地址不要附0哦,
但却出现  error: non-lvalue in assignment 左值问题。。。



还有一个释放地址 和 释放内容 是不同的概念

#include <iostream>
#include <string>
using namespace std;

class T 
{
public:
    T() { cout << "constructor" << endl; }
    ~T() { cout << "destructor  " << id << endl; }
    int id;
};

int main(int argc, char *argv[])
{
    T *ptr = new T[3];
    int i = 0;
    for (; i < 3; ++i)
    {
        (*(ptr+i)).id = i;
    }
    delete ptr;
//    delete (ptr+2);
//    delete[] ptr;

    return 0;
}


分享到:
评论

相关推荐

    删除对象数组中某个对象

    该方法是用来删除对象数组里面某个对象,造个轮子方便大家使用。

    C++Builder动态对象数组

    ### C++Builder动态对象数组:TList类、DynamicArray与STL中的Vector容器 #### TList 类 在C++Builder中,TList是用于管理动态对象数组的一种方式。它提供了较为简便的方式来创建、管理和销毁一系列对象。TList...

    详解C++中的对象指针与对象数组

    - **动态分配对象数组**:使用`new`运算符可以在运行时动态分配对象数组,如`Time *arr = new Time[5]`,不过别忘了在不再需要时使用`delete[]`释放内存。 在实际编程中,对象指针和对象数组的应用非常广泛,特别...

    编程题3_1对象数组初始化[借鉴].pdf

    对象数组初始化和 Student 类设计 在软件开发中,对象数组初始化是一种常见的编程技术,特别是在设计学生信息管理系统时。在本文中,我们将讨论如何设计 Student 类,实现对象数组的初始化和成员函数的使用。 ...

    vc++6.0中动态数组实现(例如string类对象数组等)[文].pdf

    3. 动态数组可以使用 new 和 delete 表达式来实现。 动态数组的定义: 动态数组的定义需要指定类型和数组长度,但不需要为数组对象命名。例如: ```cpp int *pia = new int[10]; // array of 10 uninitialized int...

    Vue实现动态添加或者删除对象和对象数组的操作方法

    在Vue.js框架中,动态添加或删除对象和对象数组是常见的需求,特别是在处理表单数据、列表展示等场景。本文将详细讲解如何在Vue项目中实现这一功能。 首先,我们来看一下添加对象到对象数组的核心代码: ```...

    vc++6.0中动态数组实现(例如string类对象数组等).pdf

    下面将详细介绍如何在VC++6.0中实现动态数组,特别是涉及到string类对象数组的情况。 1. 动态数组的定义 在C++中,动态数组通过`new`运算符进行创建。例如,声明一个包含10个未初始化整型元素的数组,可以这样写: ...

    js对象数组和对象的使用实例详解

    js对象数组和对象的使用主要涉及到JavaScript中的数组和对象,这两种数据结构是js编程中使用极为频繁和基础的知识点。为了更清楚的解释这两个概念以及它们的应用实例,下面将详细分解。 首先,js数组是一种特殊的...

    Vue中 axios delete请求参数操作

    vue中axios 的delete和post,put在传值上有点区别 post和put有三个参数,url,data和...如果是服务端将参数当作Java对象来封装接收则 参数格式为: {data: param} var param={id:1,name:'zhangsan'} this.$axios.delet

    【JavaScript源代码】vue 中 get delete 传递数组参数方法.docx

    在使用axios时,可以设置请求拦截器来确保每次GET或DELETE请求时都使用特定的数组格式。例如,要使用`repeat`格式,可以这样做: ```javascript import axios from 'axios'; import qs from 'qs'; axios....

    C++调用cjson解析数组

    这些信息通常以键值对的形式存在于JSON对象中,你可以按照上述步骤解析出数组,再遍历每个对象并访问相应的键。 在实际项目中,确保正确处理异常情况也很重要,比如检查`cJSON_Parse`是否成功返回非空指针,以及...

    js代码-delete 数组的 item,数组的 length 是否会 -1

    在JavaScript中,`delete`操作符主要用于删除对象的属性,但它并不适用于数组的元素。当我们在数组中使用`delete`操作符删除一个元素时,数组的`length`属性并不会自动减少,这可能会导致一些意外的结果。现在让我们...

    将数组转换成JSON对象

    在IT领域,将数组转换为JSON对象是一项常见且重要的技能,尤其在前后端数据交互、存储和传输数据时。从给定的文件标题和描述中,我们可以提炼出以下几个关键知识点: ### 1. JSON(JavaScript Object Notation)...

    JavaScript对象与数组参考大全JavaScript语法结构

    它的语法结构包括了对象和数组这两种数据类型,它们是构建复杂程序的基础。在本篇内容中,我们将深入探讨JavaScript对象和数组的详细知识。 一、JavaScript对象 1. 对象定义:JavaScript对象是一种键值对的集合,键...

    C++中new/delete与new[]/delete[]的使用区别

    5. **构造和析构**:当使用`new[]`分配对象数组时,每个对象都会调用构造函数;释放时,`delete[]`会调用每个对象的析构函数,确保正确清理资源。 总之,`new`和`delete`适用于单个对象,而`new[]`和`delete[]`适用...

    2.const对象-NULL和nullptr-C++中创建对象数组.docx

    在这篇文章中,我们将讨论C++编程语言中的几个重要概念,包括const对象、NULL和nullptr、new和delete操作符、malloc和free函数等。 1.(const对象) 在C++中,const对象是一个不可改变的对象,它的值不能被修改。...

    12_delete和delete[]的区别1

    然而,当涉及到对象数组时,`new[]`和`delete[]`的使用显得尤为重要,因为它们之间存在微妙的差别。 首先,`new`关键字用于为单个对象或对象数组分配内存。如果为单个对象分配内存,如`int *p = new int;`,那么...

    JS中彻底删除对象组成的数组中的元素

    因此,在处理对象数组时,应优先考虑使用`splice()`来删除元素,而不是`delete`运算符。 此外,`splice()`还可以用于向数组中添加新元素。例如,如果你想在索引2的位置插入一个新的对象: ```javascript arrobj....

Global site tag (gtag.js) - Google Analytics