|
发表于 2010-1-2 13:34:00
|
显示全部楼层
第二题有人回答了...
我答第一题好了..
首先..这个程序我直接复制到vs2005里面..是可以运行的..连接的话你看看项目设置有没有问题吧..
输出是1 3 2
首先1,就是这个程序在 A a;的时候,调用了一次class A的无参构造函数.
然后3,是复制构造函数.
由于const A foo(const A c)函数的参数不是引用,所以A d = foo(a);时需要值复制,一次
A ab= A(c);两次
由于const A foo(const A c)的返回值也不是引用,所以 return ab;需要复制值,三次
最后是2,析构函数调用次数
const A foo(const A c)
{
A ab= A(c);
return ab;
}
参数const A c和局部变量A ab都需要在这个函数执行完毕时析构,故两次.. |
评分
-
1
查看全部评分
-
|