刚读完 Stroustrup 的《C++ 编程语言》第 4 版,他在第 7 章中说道:
move(x)
means static_cast<X&&>(x)
其中 X 是 x 的类型
and
由于 move(x) 不会移动 x (它只是产生一个右值引用
对于 x) 如果 move() 被调用 rval() 会更好
我的问题是,如果move()
只是将变量转换为 rval,实现对变量的引用“移动”(通过更新指针)的实际机制是什么?
我想move()
就像移动构造函数一样,除了客户端可以使用 move() 来强制编译器?
实现对变量的引用“移动”(通过更新指针)的实际机制是什么?
将其传递给需要一个函数(或构造函数)rvalue引用,并从该引用移动值。如果没有强制转换,变量无法绑定到rvalue引用,因此不能传递给这样的函数 - 这可以防止变量被意外移动。
我想move()
就像移动构造函数一样,除了客户端可以使用move()
强制编译器??
不;它用于转换lvalue进入一个rvalue为了将其传递给需要一个移动构造函数(或其他移动函数)rvalue参考。
typedef std::unique_ptr<int> noncopyable; // Example of a noncopyable type
noncopyable x;
noncopyable y(x); // Error: no copy constructor, and can't implicitly move from x
noncopyable z(std::move(x)); // OK: convert to rvalue, then use move constructor
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)