c – 移动const对象是否有用?

前端之家收集整理的这篇文章主要介绍了c – 移动const对象是否有用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我意识到“你不能移动const对象”的常识并不完全正确.如果你宣布移动ctor为,你可以
X(const X&&);

完整示例如下:

#include <iostream>

struct X
{
    X() = default;
    X(const X&&) {std::cout << "const move\n";}
};

int main()
{
    const X x{};
    X y{std::move(x)};
}

Live on Coliru

问:有什么理由让人想要这样的事吗?任何有用/实用的场景?

解决方法

你的例子没有移动任何东西.是的,你写了std :: move来获得一个rvalue并且你调用了一个移动构造函数,但实际上没有任何东西被移动.它不能,因为对象是常量.

除非你感兴趣的成员被标记为可变,否则你将无法做任何“移动”.因此,没有有用甚至可能的情况.

猜你在找的C&C++相关文章