|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 析构函数有一点不理解
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
2586
人关注过本帖
标题:
析构函数有一点不理解
只看楼主
加入收藏
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
11
楼
收藏
得分:10
回复 9楼 wmf2014
他測試了直接初始化和賦値初始化兩種,對賦値初始化來説,除了被賦値的對象,還有賦値給人的對象,最後祇有兩個對象被釋放,那表明始終祇有兩個對象,那麽=右邊的對象是什麽?
具體來説,這個編譯器的處理,是把=的賦値,視同直接初始化的,move賦値,把右邊的移動到左邊,頭尾祇有一份對象。C++11的新操作。
授人以渔,不授人以鱼。
2016-01-18 16:51
举报帖子
使用道具
赠送鲜花
lyl930130
等 级:
论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
第
12
楼
收藏
得分:0
回复 6楼 TonyDeng
并不是想测试什么。只是当时学习看到这一段觉得有问题。当时不知道对已经初始化了的类是建立一个临时的变量来赋值,以为还是和初始化一样,那么按这个逻辑那析构函数的输出应该是Bye,Nanosmart!(已有的要干掉)而不是Bye,Nifty Foods!(新的还没出来)。
2016-01-18 16:52
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
13
楼
收藏
得分:0
你編製的類,是引用構造,不會复製。
授人以渔,不授人以鱼。
2016-01-18 16:58
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
14
楼
收藏
得分:0
在C++中,不同的類,有不同的處理方式。比如對vector這種,無論怎麽給它添加數據,都是复製的。
授人以渔,不授人以鱼。
2016-01-18 16:59
举报帖子
使用道具
赠送鲜花
lyl930130
等 级:
论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
第
15
楼
收藏
得分:0
回复 13楼 TonyDeng
这一点还真没注意到,因为只是对着书上代码敲了一遍。如果改成指针的话,我估计就会变了。等会试一下
2016-01-18 17:04
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
16
楼
收藏
得分:0
以下是引用
lyl930130
在2016-1-18 16:52:56的发言:
并不是想测试什么。只是当时学习看到这一段觉得有问题。当时不知道对已经初始化了的类是建立一个临时的变量来赋值,以为还是和初始化一样,那么按这个逻辑那析构函数的输出应该是Bye,Nanosmart!(已有的要干掉)而不是Bye,Nifty Foods!(新的还没出来)。
舊的C++會這樣,新標準下的就未必有臨時對象了。這本來是舊標準下某些編譯器就已經這麽做的,當時算非標,但新標把這種操作納入,就是標準操作。知識是會變的,也不是總有標準的,自己用著的是怎樣就怎樣。但就這個問題,正如我前面説的,對析構函數,少做動作是保護自己,沒什麽必要,不要在那裏寫什麽代碼,因爲你真的不能把握這函數什麽時候執行、甚至會不會執行。
授人以渔,不授人以鱼。
2016-01-18 17:06
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
17
楼
收藏
得分:0
C++有專研复製構造函數的啊,什麽時候要寫复製形式的構造函數、寫了之後接著應有一整套复製形式的函數配合,比如重載賦値操作符等。
授人以渔,不授人以鱼。
2016-01-18 17:08
举报帖子
使用道具
赠送鲜花
hjx1120
来 自:李掌柜
等 级:
贵宾
威 望:
41
帖 子:1314
专家分:6927
注 册:2008-1-3
第
18
楼
收藏
得分:0
析构函数在return 之前出现在那都是有可能的,不是楼主你想让它出现就出现的,这要看编译器的心情
2016-01-18 17:17
举报帖子
使用道具
赠送鲜花
wmf2014
等 级:
贵宾
威 望:
216
帖 子:2039
专家分:11273
注 册:2014-12-6
第
19
楼
收藏
得分:0
回复 10楼 lyl930130
没仔细看你的输出结果,对第一个bye没看见。c++的类还不熟,你这种临时类释放的说法我还要复习复习!
不过就我理解的构造函数和析构函数类似于窗口的load和unload事件,原本你不需要做什么的,但有时需要初始化数据或画蛇添足显示退出提示,就交给设计者自己处理了。
能编个毛线衣吗?
2016-01-18 17:18
举报帖子
使用道具
赠送鲜花
19
2/2页
1
2
快速回复:
析构函数有一点不理解
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.032196 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved