computer 版 (精华区)
发信人: remember (Learning C++), 信区: program
标 题: 什么时候会产生临时对象(第三个问题)
发信站: 听涛站 (2001年10月25日21:54:35 星期四), 站内信件
好,聪明的你指出,结果依然是2,因为A a[]={A(),A(1)}一句会
在编译时被认为如下意思:
A (a[0])();
A (a[1])(1);
当然,编译器展开后并不是这样子,反正大概就是没有产生临时
对象,而直接构造了a[0]和a[1],为了证明这一点,你还在析构函
数中加入cout<<"A::~A()"<<endl;来证明:看,没有输出,就是说
没有调用析构函数啊~~~
有人说,这里应该产生了临时对象啊,应该先调用构造函数产生
临时对象,然后用默认的拷贝构造函数(或者是直接位拷贝)建构
a[]。。。。似乎也有道理耶。。。。
我们为了进一步验证我们的想法,我们增加一个拷贝构造函数:
A(const A& a) { cout<<"A:A(const A&)"<<endl; count++ }
好,结果会如何呢?
: : ※ 来源:·听涛站 tingtao.dhs.org·[FROM: 匿名天使的家]
:
: --
: 洛阳亲友如相问 一片冰心在玉壶
--
洛阳亲友如相问 一片冰心在玉壶
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:0.864毫秒