ivanlw
V2EX  ›  问与答

关于C++指针delete的几个问题……

  •  
  •   ivanlw · Sep 27, 2013 · 2538 views
    This topic created in 4698 days ago, the information mentioned may be changed or developed.
    1.对于一个类来说
    class A
    {
    int value;
    }
    我已经知道了实例化的时候A a;和A *a;的区别是使用的时候A.value和A->value的区别,但是好像后者还要最后delete a;一下,是不是就一无是处了?

    2.new一个新的指针,然后移动它(比如linked list的操作),最后要删除的时候出错;网上搜的方法是new的时候,同时new一个backup的指针,指向原来那个指针,最后delete这个bakcup的指针,这个方法靠谱吗?
    sgissb1
        1
    sgissb1  
       Sep 27, 2013
    第一个问题,我觉得你可以忽略掉。要真心了解,还需要了解到更下层的东西。

    第二问题完全看不懂,请直接上代码,或者csdn!
    yujnln
        2
    yujnln  
       Sep 27, 2013
    1. 不是特别理解你想表达的这个问题的意思。
    首先,使用的正确的调用方式:
    a.value和a->value都是是访问不到的,class默认access是private。
    delete一下是因为你直接new了一下,配套使用,不然会造成memory leak。
    一个是类的实例A a,而另一个A *a如果是指向这个类型的一个指针,那么它占用的内存是小于这个实例的,但介于目前这个例子只声明了一个int… 具体sizeof一下,2者应该一样大。

    2. 一般来说,谁负责new谁负责delete。然,delete之后=0是个好习惯。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2927 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:29 · PVG 16:29 · LAX 01:29 · JFK 04:29
    ♥ Do have faith in what you're doing.