C++拷贝函数的应用

来源:百度知道 编辑:UC知道 时间:2024/06/01 04:05:31
//-------------------------------------------------
#include<iostream.h>
class FOO
{
public:
FOO(int i)
{
cout<<"Constructing.\n";
pointer=new int;
*pointer=i;
return;
}
FOO(const FOO& other)
{
cout<<"Copy constructing.\n";
pointer=new int;
*pointer=*other.pointer;
return;
}
~FOO()
{
cout<<"Destructing.\n";
delete pointer;
return;
}
int get()
{
return *pointer;
}
private:
int *pointer;
};
//-------------------------------------------------
void display(FOO obj)
{
cout<<obj.get()<<"\n";
return;
}
//-------------------------------------------------
int main()
{
FOO obj1(15);
FOO obj2=obj1;
display(obj2);
return 0;
}
写出程序的执行结果,并较详

程序执行结果和解释如下:
Constructing. // FOO obj1(15); 即构造obj1
Copy constructing. // FOO obj2=obj1; 即构造obj2
Copy constructing. // display(obj2);即obj2=>obj
15 // cout<<obj.get()<<"\n";
Destructing. // 析构obj
Destructing. // 析构obj2
Destructing. // 析构obj1

Constructing.
Copy constructing.
Copy constructing.
15
Destructing.
Destructing.
Destructing.

int main()
{
FOO obj1(15);//FOO(int i);
FOO obj2=obj1;//FOO(const FOO& other)
display(obj2);//FOO(const FOO& other)
return 0;
}
//析构按照构造的相反顺序进行

拷贝构造函数在3种情况下会被调用,你该查一下是哪3种,问题就解决了。