小编akh*_*hra的帖子

为什么只有在向量中已有元素时才调用移动构造函数?

我正在尝试学习C++ 11中的新功能.我正在测试XCode中的以下代码.

#include <iostream>
#include <string>
#include <vector>

class CClass
{
    std::string s;
public:
    CClass()
    {
        std::cout<<"Default Constructor"<<std::endl;
    }
    CClass(const std::string v) :s(v) {
        std::cout<<"Constructor"<<std::endl;
    }

    CClass(const CClass& other): s(other.s) {
        std::cout<<"Copy Constructor"<<std::endl;
    }
    CClass(CClass&& a) noexcept
    {
        std::cout<<"Move Constructor"<<std::endl;
        s = std::move(a.s);
    }
    CClass& operator = (const CClass& other)noexcept
    {
        std::cout<<"Copy Assignment"<<std::endl;
        if(this != &other)
        {
            s = other.s;
        }
        return *this;
    }
    CClass& operator = (CClass&& other) noexcept
    {
        std::cout<<"Move Assignment"<<std::endl;
        if(this != &other)
        {
            s = std::move(other.s); …
Run Code Online (Sandbox Code Playgroud)

c++ vector back c++11 emplace

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

标签 统计

back ×1

c++ ×1

c++11 ×1

emplace ×1

vector ×1