C++中对象实例化时有如下两种方法:1、类名 对象名(参数)2、类名 对象名=new 类名(参数);两者的区别?

日期:2018-04-11 15:05:22 人气:2

C++中对象实例化时有如下两种方法:1、类名 对象名(参数)2、类名 对象名=new 类名(参数);两者的区别?

前一种是在栈区申请。后一种是在堆区申请。(后一种应该是 类名* 对象名=new 类名(参数)) 例如在函数fun中的两个对象 fun() { BASE a; BASE* b = new BASE(); } 当函数fun执行结束后,a会自动调用BASE的析构函数,结束自己的生命 而b指向的对象不会结束自己的生命。你必须手动调用delete b 如果你使用new申请,要记住写delete否则会造成内存泄漏(虽然小程序可能不在乎这点泄漏)。
    A+
热门评论