1.如果类没有定义拷贝构造函数,则会自动创建默认拷贝构造函数(采用位拷贝方式)。
#include
class cp1
{
public:
cp1(){std::cout<<"Constructor"< ~cp1(){std::cout<<"Deconstructor"<};
int main()
{
cp1 a;
cp1 b = a;
return 0;
}
2.临时对象:
#include
class cp2
{
public:
cp2(){std::cout<<"Constructor"< ~cp2(){std::cout<<"Deconstructor"< cp2(const cp2& b){std::cout<<"Copy constructor"<};
cp2 f(cp2 x){ return x;};
int main()
{
cp2 a;
f(a);
return 0;
}
main函数中的f(a)会调用拷贝构造函数。但是拷贝构造函数必须有一个作为它的目的地(this指针)的工作地址,但是f(a)的目的地址从哪里来?这时编译器创建一个看不见的对象作为f(a)返回值的目的地址。一旦函数调用结束就会调用析构函数。
阅读(1293) | 评论(0) | 转发(0) |