二维码
微世推网

扫一扫关注

当前位置: 首页 » 快闻头条 » 商务攻略 » 正文

c++使用new和不使用new的区别

放大字体  缩小字体 发布日期:2022-01-02 03:58:37    作者:高宇涵    浏览次数:392
导读

new创建类对象需要指针接收new创建类对象需要使用delete销毁new创建对象直接使用堆空间,而局部不用new定义得类对象则使用栈空间new对象指针用途广,比如作为函数返回值,函数参数等使用new创建CTest* pTest = new C

new创建类对象需要指针接收

new创建类对象需要使用delete销毁

new创建对象直接使用堆空间,而局部不用new定义得类对象则使用栈空间

new对象指针用途广,比如作为函数返回值,函数参数等

使用new创建

CTest* pTest = new CTest();

delete pTest;

不使用new创建,直接使用类定义声明

CTest mTest;

一般情况下不使用new

创建对象时有括号与没有括号得区别

在栈上创建对象:

1: CTest mTest; 调用默认构造函数

2: CTest mTest(); 表示一个CTest成员变量

3: CTest mTest(2); 调用某种函数CTest(int)

在堆上创建对象:

1: 如果该类没有定义构造函数(由编译器合成默认构造函数), 也没有虚函数,那么CTest* pTest = new CTest;将不调用合成得默认构造函数,CTest *pTest = new CTest(); 则会调用默认构造函数

2: 如果该类没有定义构造函数(由编译器合成默认构造函数), 但是有虚函数,那么CTest* pTest = new CTest和CTest *pTest = new CTest(); 会调用默认构造函数

3: 如果该类定义了默认构造函数,那么CTest* pTest = new CTest和CTest *pTest = new CTest(); 会调用默认构造函数

4: 对于系统内置类型:

new int; 分配内存,未初始化

new int(); 分配内存,初始化为0

new int(1); 分配内存, 初始化为1

 
(文/高宇涵)
免责声明
• 
本文仅代表发布者:高宇涵个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈