有没有办法在没有std::move的情况下在C++中调用移动赋值运算符?

我想知道是否可以在不使用标准库 std::move 的情况下调用移动赋值运算符。

例如,如果我打电话:

class A {
    private:
        char* data;
    public:
        // move constructor
        A(A&& other) : data(other.data) {
            // we steal the pointer!
            other.data = NULL;
        }
        // move operator=
        A& operator=(A&& other) {
            if (this != &other) {
                delete data;
                data = other.data;
                data.foo = NULL;
        }
            return *this;
        }
};

int main(){
    A objA; 
    A objB; 
    objB = std::move(objA);
}


我现在可以写其他东西objB = std::move(objA);吗?

回答

有没有办法在没有 std::move 的情况下在 C++ 中调用移动赋值运算符?

std::move是一个非常简单的函数,仅执行强制转换。您可以编写该强制转换而不是调用函数:

objB = static_cast<A&&>(objA);

我不知道这样做的实际原因。


以上是有没有办法在没有std::move的情况下在C++中调用移动赋值运算符?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>