我正在阅读C++引物5版。直到第13章在谈到“移动操作”时:
与复制操作不同,移动操作从未被隐式定义为已删除函数。但是,如果我们显式地要求编译器使用= default (§7.1.4,p. 264)生成一个移动操作,并且编译器无法移动所有成员,那么移动操作将被定义为删除。除了一个重要的例外,当合成的移动操作被定义为删除时的规则类似于复制操作的规则(第13.1.6节,第508页):
因此,我不明白“与复制操作不同,移动操作从未被隐式定义为已删除的函数”。
发布于 2020-02-02 21:01:59
,这是否意味着复制操作被隐式定义为已删除的操作?如果是什么时候?
是。
当成员不能被复制时(例如,它们是不可复制的类型)。
因此,我不明白“与复制操作不同,移动操作从未被隐式定义为已删除的函数”。
如果删除了移动构造函数,则会立即出现编译错误,而不是尝试使用复制构造函数。
换句话说,
请解释隐式移动操作与它们相应的副本操作之间的区别。
这里的关键是the difference between , and 。
我不知道这本书为什么这么大惊小怪。只有当复制构造函数有时被隐式删除时,这种区别才是有趣的。删除复制构造函数并不特别有趣,因为如果不删除,您仍然无法得到副本。就没有其他构造函数可供依赖了。嗯,我想,考虑到其他一些隐式转换序列,我想可能会有,所以这有点有趣。
https://stackoverflow.com/questions/60029842
复制相似问题