Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++11의 5법칙이란?


5의 규칙은 리소스 관리를 위해 C++에 적용됩니다. 리소스 관리는 클라이언트가 관리 대상 개체의 수명에 대해 걱정할 필요가 없도록 하여 잠재적으로 C++ 코드의 메모리 누수 및 기타 문제를 제거합니다. 그러나 이러한 관리에는 대가가 따릅니다. Big Five의 규칙에 따르면 다음 기능 중 하나를 작성해야 하는 경우 모든 기능에 대한 정책이 있어야 합니다. 객체 Foo가 있으면 리소스 Foo를 처리하는 FooManager를 가질 수 있습니다. FooManager를 구현할 때 다음 기능을 구현해야 할 것입니다. -

  • 소멸자 − 이 관리자가 범위를 벗어나면 관리하고 있던 모든 리소스를 해제해야 합니다.

  • 할당 연산자 − 제공하지 않으면 컴파일러에서 기본 할당 연산자를 생성합니다. 기본 할당 작업은 멤버별 복사 기능이며 전체 복사가 아닌 얕은 복사를 수행합니다. 메모리 누수, 잘못된 할당과 같은 문제가 발생할 수 있습니다.

  • 복사 생성자 − 컴파일러 제공 복사 생성자는 모든 FooManager 속성의 구성원별 복사를 수행합니다. 이는 할당 연산자와 동일한 문제를 제기합니다.

  • 이동 생성자 − 객체를 복사하는 것은 임시 객체를 생성, 복사 및 파기해야 하기 때문에 비용이 많이 들 수 있습니다. C++11은 r-값 참조의 개념을 도입했습니다. r-값 참조는 r-값에 명시적으로 바인딩될 수 있습니다. r-값은 이름 없는 개체입니다. 즉, 임시 개체입니다. 이 r-값 참조는 전달된 r-값에 대한 참조를 생성하기 위해 생성자에서 사용할 수 있습니다.

  • 대입 연산자 이동 − 한 번에 하나의 리소스만 갖는 것이 유용합니다. 이 리소스의 소유권은 한 관리자에서 다른 관리자로 이전될 수 있습니다. 이러한 경우 이동 할당 연산자를 제공할 수 있습니다.

이것은 5의 법칙에 대해 배울 수 있는 훌륭한 리소스입니다. https://www.feabhas.com/sites/default/files/2016-06/Rule%20of%20the%20Big%20Five.pdf.