这是调用了复制构造函数还是调用了重载赋值操作符?该如何处理
这是调用了复制构造函数还是调用了重载赋值操作符?
Point 是一类类型
Point foo_bar(Point arg)
{
Point local = arg; //这是调用了复制构造函数还是调用了重载赋值操作符?
}
有点迷惑了!
------解决方案--------------------
Point local = arg; 复制构造函数
Point local; 构造函数
local = arg; 赋值运算符
------解决方案--------------------
赋值操作符的作用: (判断是否自身赋值) 删除左操作数原来的值(也就是说左操作数必须是已经存在的) 再将右操作数的值赋给左操作数
Point local = arg; 楼主这句话里 是属于采用复制构造的方式初始化 local对象
如果local已经存在 再这样: local = arg 的话 就属于赋值
Point 是一类类型
Point foo_bar(Point arg)
{
Point local = arg; //这是调用了复制构造函数还是调用了重载赋值操作符?
}
有点迷惑了!
------解决方案--------------------
Point local = arg; 复制构造函数
Point local; 构造函数
local = arg; 赋值运算符
------解决方案--------------------
赋值操作符的作用: (判断是否自身赋值) 删除左操作数原来的值(也就是说左操作数必须是已经存在的) 再将右操作数的值赋给左操作数
Point local = arg; 楼主这句话里 是属于采用复制构造的方式初始化 local对象
如果local已经存在 再这样: local = arg 的话 就属于赋值