比如CStatic m_wndStatic
和  CStatic* m_pwndStatic
的区别,除了m_pwndStatic在析构时要delete,两则还有什么差别呢?比如效率什么的

解决方案 »

  1.   

    一个是创建类对象,一个是创建指针,没什么可比较的
    CStatic m_wndStatic;
    CStatic* m_pwndStatic;
    第一句执行时调用了构造函数,对象跳出作用域销毁时执行析构函数。第二句不会调用构造函数,只有使用new时才会调用构造函数,使用delete时才会调用析构函数。
      

  2.   

    CStatic m_wndStatic;
    这个是将类实例化为一个对象,在生命周期结束后,自动释放内存。如果在函数内声明,则函数结束,它就自动释放。如果不想使立即释放,则可以声明为全局变量,或者声明为static.CStatic* m_pwndStatic;
    这个是是声明一个指向类的指针,没有对象的概念,只有调用new后,才会实例化为对象。并且需要自己delete.