C++ vector reallocate action with noexcept

#include <iostream>
#include <vector>

class MyClass
{
private:
    std::string _name{};

public:
    MyClass(const std::string& name)
        :_name(name)
    { 
        std::cout << "create : " << _name << std::endl;
    }

    MyClass(const MyClass& other) noexcept
    {
        std::cout << "copy : " << other._name << std::endl;
    }

    // "noexcept"가 없으면 move가 아닌 copy가 불린다.
    MyClass(MyClass&& other) noexcept
    {
        std::cout << "move : " << other._name << std::endl;
    }
};

int main() {
    std::vector<MyClass> list;
    list.reserve(2);
    list.emplace_back("a1");
    list.emplace_back("a2");
    list.emplace_back("a3");
}

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다