Point global;
Point foo_bar(Point arg){ ①
Point local = arg; ②
Point *heap = new Point(global); ③
*heap = local;
Point pa[4] = {local④, *heap⑤};
return *heap;⑥
}
问题:为什么*heap=local没有使用? 难道不是把local复制给heap指向的对象吗??为什么没用到!!
6 个解决方案
#1
这里用的不是拷贝构造,而是拷贝赋值。
调用的是 operator=
调用的是 operator=
#2
但这两者一般都是一起用的不是吗?
Point local = arg 这句是同时使用了拷贝构造和opretor= 对吗
我不懂*heap=local 和Point local = arg本质上有什么区别呢?
#3
啊我懂了 谢谢。
#4
楼主,你的写法有问题吧
local 为Point 类型,heap 为Point指针类型,这两个是不能赋值呢
而且指针赋值,传的是地址,不是对象内容,并不会调用拷贝和赋值,如果是对象赋值会调用赋值
local 为Point 类型,heap 为Point指针类型,这两个是不能赋值呢
而且指针赋值,传的是地址,不是对象内容,并不会调用拷贝和赋值,如果是对象赋值会调用赋值
#5
构造意味着对象不存在, 出现应该是对象定义的地方, *heap已经不是定义了
#6
Point local = arg 是初始化 (initialize) ,不是赋值,不会调用拷贝赋值,只调用拷贝构造。
#1
这里用的不是拷贝构造,而是拷贝赋值。
调用的是 operator=
调用的是 operator=
#2
这里用的不是拷贝构造,而是拷贝赋值。
调用的是 operator=
但这两者一般都是一起用的不是吗?
Point local = arg 这句是同时使用了拷贝构造和opretor= 对吗
我不懂*heap=local 和Point local = arg本质上有什么区别呢?
#3
这里用的不是拷贝构造,而是拷贝赋值。
调用的是 operator=
啊我懂了 谢谢。
#4
楼主,你的写法有问题吧
local 为Point 类型,heap 为Point指针类型,这两个是不能赋值呢
而且指针赋值,传的是地址,不是对象内容,并不会调用拷贝和赋值,如果是对象赋值会调用赋值
local 为Point 类型,heap 为Point指针类型,这两个是不能赋值呢
而且指针赋值,传的是地址,不是对象内容,并不会调用拷贝和赋值,如果是对象赋值会调用赋值
#5
构造意味着对象不存在, 出现应该是对象定义的地方, *heap已经不是定义了
#6
这里用的不是拷贝构造,而是拷贝赋值。
调用的是 operator=
但这两者一般都是一起用的不是吗?
Point local = arg 这句是同时使用了拷贝构造和opretor= 对吗
我不懂*heap=local 和Point local = arg本质上有什么区别呢?
Point local = arg 是初始化 (initialize) ,不是赋值,不会调用拷贝赋值,只调用拷贝构造。