所以移动构造函数:
foo(foo &&)
是在c ++程序中隐式生成的。我不明白为什么它需要在参数数据类型旁边有一个双符号。我理解双&符号表示对rvalue的引用,但我不知道如何将其应用于此上下文。
答案 0 :(得分:2)
移动构造函数的目的是获取将要销毁的对象资源的所有权,以节省副本的成本。无论如何,即将被销毁的对象是r值。因此,移动构造函数的参数类型是对r值的引用。
它还能做什么?它不能是l值引用,也就是复制构造函数。而且我们不能通过值来获取,因为这将调用复制构造函数(并且也与它不明确),从而破坏了移动构造函数的整个目的。