기본이라는 거는 표준을 말하는거임


class T { public: T() = default; T(const T&) = default; // copy constructor T& operator=(const T&) = default; // copy assignment T(T&&) = default; // move constructor T& operator=(T&&) = default; // move assignment }; T a, b; a = b; // copy a = T(); // move and destruction of temporary rvalue a = std::move(b); // move but no destruction of lvalue(b)


lvalue를 주면 복사고 rvalue를 넘기거나 lvalue를 명시적으로 std::move로 캐스팅해서 주면 이동임


대부분의 경우 너가 구현할 필요 없고 위처럼 default라고 하면 알아서 멤버변수들을 각각 복사, 이동시켜주도록 구현해줌


그리고 c++의 자료형들은 대부분 이동, 복사 연산자가 구현되어 있음