《Visual C++从入门到精通》的3个问题
发表在C语言图书答疑 2011-09-19
是否精华
版块置顶:
一、在该书中P120页定义了2个类对象(指针),并使用new运算符为其分配内存:CUser *pUser=new CUser和CUser *pUser=new CUser(),请问:加括号与不加括号有什么不同?2种形式释放内存的方式为什么不同(前一个是delete pUser,后一个是delete (CUser *)pUser)?
二、书中P120页说“每个类都有构造函数和析构函数”,那当没有定义默认构造函数时,系统默认的构造函数是不是(见书中例5.5):CUser()
                   {}
三、P124页(例5.8)定义的复制构造函数把它注释掉后输出的结果和例5.9的结果是相同的,此时是不是仍然调用了复制构造函数呢,且功能与例5.8定义的复制构造函数相同,只不过它是隐式的?

谢谢!
分享到:
精彩评论 1
张小飞
学分:0 LV1
TA的每日心情
开心
2021-10-24 18:57:39
2011-09-19
沙发
读者你好!
一、加括号表示在new分配内存空间时对内存地址进行了初始化操作。
delete释放功能是相同的,都是delete pUser;但是在书中第二个是为一个const类型的指针变量开辟内存空间。因此在释放时使用delete(CUser *)pUser;

二、无论是否自定义构造函数,系统都会默认存在这样一个构造函数(CUser(){})

三、你自己注释掉后出现的结果与5.9相同是吗?都注释掉了,当然不会再执行这个复制构造函数了,结果自然就跟5.9的相同。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照