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毫秒