小编Der*_*k81的帖子

移动构造函数与复制省略

有人可以向我解释一件事吗?从一方面来看,它的move constructor设计目的是通过消除不必要的复制对象来优化内存和处理器的使用,但从另一面来看,几乎所有地方move constructor都会使用编译器使用复制省略move ctor,禁用?的使用。这不是不合理吗?

c++ constructor move-semantics copy-elision

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

创建新的类对象并移动语义

有这个简单的类:

#include <iostream>

class B 
{ 
public:  
    //default constructor
    B(const char* str = "\0") {
        std::cout << "Constructor called\n";
    }

    //copy constructor
    B(const B& b)   {
        std::cout << "Copy constructor called\n";
    }

    //move constructor
    B(B&& b) {
        std::cout << "Move constructor called\n";
    }
}; 
Run Code Online (Sandbox Code Playgroud)

这些语句之间在移动语义方面有什么区别:

B o1 = B("abc");
B o2 = B(B("abc")); 
Run Code Online (Sandbox Code Playgroud)

这两行等价吗?

c++ constructor move-semantics copy-elision

0
推荐指数
1
解决办法
98
查看次数

标签 统计

c++ ×2

constructor ×2

copy-elision ×2

move-semantics ×2