小编Isl*_*iev的帖子

显式删除了移动构造函数

为什么这个:

struct A
{
    A(int) {
        cout << "construct from int" << endl;
    }

    A(A&&) = delete;

    A(const A &) {
        cout << "copy constructor" << endl;
    }
};

int main(){
    A a = 0;
}
Run Code Online (Sandbox Code Playgroud)

给我一个错误:

error: use of deleted function ‘A::A(A&&)’
Run Code Online (Sandbox Code Playgroud)

为什么当我添加这样的移动构造函数

A(A&&) {
    cout << "move constructor" << endl;
}
Run Code Online (Sandbox Code Playgroud)

编译很好,但程序的输出只是

construct from int
Run Code Online (Sandbox Code Playgroud)

所以据我所知,编译器要求构造函数但不使用它.为什么?这对我来说毫无意义.

PS我认为

A a = 0;
Run Code Online (Sandbox Code Playgroud)

是等价的

A a = A(0);
Run Code Online (Sandbox Code Playgroud)

但为什么既不移动构造函数也不移动赋值运算符?

c++ constructor copy-constructor c++11

6
推荐指数
1
解决办法
587
查看次数

标签 统计

c++ ×1

c++11 ×1

constructor ×1

copy-constructor ×1