如:A *a;
这时是不是不分配内存。
但A a;是不是已分配了内存?

解决方案 »

  1.   

    A *a=new A[];分配内存
    A a;//a要初始化才能分配内存
      

  2.   

    指针实际上就是一个32位的数(针对Win32,不论是什么对象的指针),创建指针实际上就是在堆栈里建一个32位的数.(当然,在堆栈里分配了4字节的内存)
    而以A a方式创建对象时,同样是在堆栈里分配内存,但这时分配的大小是该类的大小,不同的类其大小是不同的.
      

  3.   

    to zyleon(zy):
    A a;//a要初始化才能分配内存
    这时不是已经调用构造函数初始化了么?
      

  4.   

    指针就是指针,
    而对象就是对象对象可用两种方法创建,动态和静态,也就是动态内存分配和静态内存分配.
    动态创建对象返回这个对象的指针,用指针来操作对象.指针的本质作用也在于此,用于动态内存的操作和管理A *pA
    pA = new A   //动态内存分配A a;         //静态内存分配动态内存分配和静态内存分配有什么不同,可参见一些书,如:C++编程思想..
      

  5.   

    A *a; //分配一个32位的指针变量A a;  //分配一块sizeof(A)大小的内存,并调用类的构造函数来初始化
      

  6.   

    SoLike说的不错。试试能更明白些
    class A
    {
    public:
    A(){a=0;b=0;c=0;cout<<"A's con\n";}
    private:
    int a;
    int b;
    int c;
    };
    void main()
    {
    A* p=NULL;
    A* q=new A;
    A  t; cout<<sizeof(p)<<endl;
    cout<<sizeof(q)<<endl;
    cout<<sizeof(t)<<endl;
    cout<<sizeof(*p)<<endl;
    cout<<sizeof(*q)<<endl;
    delete q;
    }