隐式创建
显示创建
new创建
以上区别:
以上三种方法,12可认为是同一种,基本相同
(1)new出来的对象必须用指针接收,且需要显式delete销毁对象释放内存
(2)内存位置不同:
对于隐式声明 ,p1对象位于栈空间
Person p1;
对于new创建的,p5对象位于堆空间
Person *p5 = new Person();
(3)内存分配时间不同
使用隐式创建对象的时候,创建支出就已经分配了内存。而使用new的方式,如果对象没有初始化,此时没有分配内存空间,也无法delete。
(4)隐式声明的对象是局部变量,出了函数就没有了。而new出来的指针对象可以在方法之间传递,且该指针对象所指向的堆中的对象实例仍然存在。
(5)频繁调用场合并不适合new,就像new申请和释放内存一样。
转载csdn原创文章:https://blog.csdn.net/bitcarmanlee/article/details/124218284