标题:[讨论]临时对象的问题
只看楼主
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
得分:0 
以下是引用nick_annie在2006-7-24 23:32:31的发言:
这个问题你前面已经说过了,返回自己的时候是不会生成临时对象的
恩,我了解了...其他情况的话只要函数返回对象就一定会用COPY CONSTRUCTOR生成临时对象的
是吧?

是这样的,我做了很多测试
如果你功力可以,你干脆看看<<inside the c++ object model>>


c++/C + 汇编 = 天下无敌
2006-07-24 23:35
nick_annie
Rank: 1
等 级:新手上路
帖 子:105
专家分:0
注 册:2005-11-19
得分:0 

好,如果是中文的话..相信我还是可以的..


2006-07-24 23:37
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 
the temp object will be usually created by object assignment, or a function return an object(not reference), and something like you above spoken. But, you must know, it depens on the compiler that you used. That mean, it will be differently handelt. For example by assignment, not always an temp Object will be created.



自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-07-24 23:38
nick_annie
Rank: 1
等 级:新手上路
帖 子:105
专家分:0
注 册:2005-11-19
得分:0 
yep,just like what you've said above
eg:
Sample s1=Sample s2(.....);
..............
sometimes the compiler will creat a temp object and make a copy to s1
but sometimes may not!

My appreciation here!

2006-07-24 23:43
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 
kan lai ni xiang kao kao da jia a.

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-07-24 23:46
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
得分:0 
以下是引用nick_annie在2006-7-24 23:43:04的发言:
yep,just like what you've said above
eg:
Sample s1=Sample s2(.....);
..............
sometimes the compiler will creat a temp object and make a copy to s1
but sometimes may not!

My appreciation here!

这个绝对是会调用copy constroctor
因为 Sample s1=Sample s2(.....)相当于 Sample s1(s2)

[此贴子已经被作者于2006-7-24 23:48:10编辑过]


c++/C + 汇编 = 天下无敌
2006-07-24 23:47
nick_annie
Rank: 1
等 级:新手上路
帖 子:105
专家分:0
注 册:2005-11-19
得分:0 
以下是引用热情依然在2006-7-24 23:47:22的发言:

这个绝对是会调用copy constroctor
因为 Sample s1=Sample s2(.....)相当于 Sample s1(s2)


My apologize,I misnunderstood you a little bit
I mean:
Sample s1=Sample (...);

Then,what about this time?


2006-07-24 23:52
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
得分:0 
以下是引用nick_annie在2006-7-24 23:52:17的发言:

My apologize,I misnunderstood you a little bit
I mean:
Sample s1=Sample (...);

Then,what about this time?

#include<iostream>

using namespace std;


class text
{
public:
text(){ cout << "hello constroctor" <<endl;}
text(const text &t){ cout << "hello copy" << endl;}
};

int main()
{
text t1 = text(text());
text t2 = text();
}

我的编译器是vc.net做了优化,所以调用 text()但是按照语法,是调用text(text &),


c++/C + 汇编 = 天下无敌
2006-07-25 00:03
nick_annie
Rank: 1
等 级:新手上路
帖 子:105
专家分:0
注 册:2005-11-19
得分:0 
以下是引用kai在2006-7-24 23:46:41的发言:
kan lai ni xiang kao kao da jia a.

No intention to have a test for oyur guys here,
you two have been elcted to be the "Ban Zhu"here,
but i'm just a freshman for C plus plus...
you flattered me a lot!
Thanks...


2006-07-25 00:09
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 
wo bu shi ban zhu, zhi shi yi ge xiao bing.

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-07-25 00:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-80027-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016262 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved