拷贝初始化函数

来源:百度知道 编辑:UC知道 时间:2024/06/21 00:51:19
幼稚点的问题,拷贝初始化函数是 “初始华的时候能拷贝” 还是 “任意时刻都能拷贝”?
比如:
class tpoint
{
int x,y;
public :
tpoint()
{}
tpoint(int x1,int y1)
{x=x1;
y=y1;
}
tpoint (tpoint &a)
{ x=a.x;
y=a.y;
}
void cpoint()
{
x=20;
y=10;
}
};
void main ()
{
class a(12.6);
a.cpoint();
class b(a);
}
最后一行class b(a);执行的时候是把(12.6)给b, 还是把(20.10)给b?
能否说明一下这个 拷贝初始化函数有什么用处?
丹丹的话我听不懂 我太菜了。、
用tpoint定义创建一个pt对象,当pt作为形参传递给fun函数的时候,如果不用拷贝构造函数,就不能传递实参的值,是这个意思吗? 那是不是说 对象作为形参传递的时候,如果想往里面赋值,就必须用拷贝构造函数?

把(20.10)给b?

用处大啊。
void fun(tpoint pt)
{//。。。
}

必须有拷贝构造函数,必须实参无法把值传给形参

拷贝初始化函数也是构造函数,所以只能定义这个变量的时候用。

tpoint a(10,20) ;
fun(a);//这是会定义一个变量pt,并调用拷贝构造函数,把a的值给pt

拷贝的作用就是吧A的内部数据复制一份到B,
a内的值为
x=20;
y=10;
所以b内的值为
x=20;
y=10;