拷贝构造的问题(100分)

  • 主题发起人 主题发起人 yyhhnn
  • 开始时间 开始时间
Y

yyhhnn

Unregistered / Unconfirmed
GUEST, unregistred user!
#include <iostream.h>
class x
{
public:
x(int);
x(x&amp;);
~x();
int bb;
};
x::x(int aa)
{
cout<<"cons "<<aa<<endl;
bb=aa;
}
x::x(x&amp
cc)
{
bb=cc.bb+1;
cout<<"cons copy "<<bb<<endl;
}
x::~x()
{
cout<<" destruct "<<bb<<endl;
}
x f(x aa)
{
cout<<"in f"<<endl;
cout<<"aa "<<aa.bb<<endl;
return aa;
}

(甲)
void main()
{
x a(1);
x b(2);
a=f(b);
cout<<"a "<<a.bb<<endl;


为了显示清楚调用关系,我在拷贝构造函数中将bb的值加1 !!!,

运行结果:

cons 1
cons 2
cons copy 3
in f
aa 3
cons copy 4 //赋值操作不应该调拷贝构造的,为什么会有这行生成??
destruct 3
destruct 4 //请问这行是怎么生成的????????
a 4
destruct 2
destruct 4


(1)甲程序的cons copy 4 这一行的生成到底是临时对象的拷贝构造还是a的拷贝构造????
(2)甲程序的destruct 3是析构临时对象?还是f函数的局部对象aa析构??
(3)甲程序的destruct 4又是析构什么东东??




 
不会吧,没人会c++??

我觉得应该好好看看c++,毕竟c++的经典书籍书籍要比object pascal 多得多,学会了c++,
才能深入进DELPHI的面向对象的学习,而不仅仅只是肤浅的应用delphi


 
我认为什么OO、++、#、--什么的都不是究竟,他们只不过是实现工具(方式)而已,要解决实际问题
最后还是要靠算法。

>>不会吧,没人会c++??
天哪,我看你比我来DFW还要早一年多,怎么连这里有没有C++高手都不知道?真不知你是怎么弄的。
左轻候、温柔一刀等都是大家公认的绝顶高手,还有无数知名度不是太高的隐藏高手。
睁大眼睛好好的看看,不要做井底之蛙了!

>>C++经典书籍
看来阁下已经看了不少了,怎么还是不会?书上没写吗?
 
这个问题……
找一本参考书看看,随便一本都会有的
 
后退
顶部