问题1:请问各位,ClassName aObject与ClassName *aObject=new ClassName()有什么本质区别?这两条语句不是都可以调用类下成员或函数吗?执行(也许是编译)第一条语句时系统是否分配空间,如果分配,分给谁了?
问题2:“ClassName *& aObject”这是什么意思?
问题3:怎么调用系统的堆栈、链表之类的东西?

解决方案 »

  1.   

    1 定义一个变量;定义一个指针;  第一句分配了空间。 第一个用aObject.来调用成员,第二个用->
      

  2.   

    ClassName aObject是定义了一个变量,这个变量在内存中存放在堆栈(局部变量)或数据段内存(静态变量或外部变量),它的生存期取决于你定义的代码块(就是包含它的{}之内),它的内存空间是编译器指定的,你可以简单地认为是编译器分配的。而ClassName *aObject=new ClassName()只定义了一个指针变量,但在堆中分配了内存,只有调用delete时才会析构。它的内存是new分配的,分配给aObject了,在delete时归还。
    ClassName *& aObject定义了一个指针引用,这个如果你理解引用,我也就不多说了,你如果不理解,一时也说不清,看C++中引用的说明吧
    “调用系统堆栈”不知什么意思,堆栈有使用,没见过调用。系统堆栈指什么?如果指Windows,一班用户层,Windows就使用你的堆栈,并不切换。如是内核,那是进入特权层时切换的,无法使用。所以不清楚你指什么。
    系统链表也不知是什么?
      

  3.   

    ClassName aObject:堆;
    ClassName *aObject=new ClassName():栈;
      

  4.   

    TO:(饱汉不知饿汉饥,饿了一日,方知饿乃天下第一大事!)  ClassName aObject:堆;
    ClassName *aObject=new ClassName():栈;
    ------------------------------------------
    怎么我学的和你说的正好相反啊,你再想下
      

  5.   

    ClassName aObject:栈;
    ClassName *aObject=new ClassName():堆;