5. Techniques

여러 테크닉에 대해 알아보자.

25. Virtualizing constructors and non-member functions

C++에는 가상 생성자가 없다. 주어진 입력에 따라서 다른 오브젝트를 생성해 돌려주는 함수를 만들어서 가상 생성자로 생각할 수 있다. 비 멤버함수도 파라미터로 주어진 기반 클래스 오브젝트의 가상 함수를 호출함으로써 가상화할 수 있다.

26. Limiting the number of objects of a class

생성자를 private로 둬서 오브젝트 숫자를 0개로 제한할 수 있다. 클래스의 static 멤버 변수로 가능한 오브젝트 수를 둬서 오브젝트 숫자를 제한할 수 있다. std::unique_ptr로 오브젝트 생성의 컨텍스트를 설정할 수 있다. 스마트 포인터로 오브젝트의 생애 주기를 관리할 수 있다. 이를 확장해 오브젝트 수를 관리하는 기반 클래스도 만들 수 있다.

27. Requiring or prohibiting heap-base objects

소멸자를 private로 둬서 힙에 오브젝트를 두도록 강제할 수 있다. 힙에 오브젝트가 생성되었는지를 추적하려면 오브젝트가 operator new로 생성될 때마다 그 주소를 추적하고 있어야 한다. operator new/operator delete를 private로 둬서 스택에 오브젝트를 두도록 강제할 수 있다.

28. Smart pointers

std::unique_ptr로 오브젝트에 대해 소유권이 유일한 포인터를 생성한다. std::shared_ptr로 오브젝트에 대해 소유권이 공유되는 포인터를 생성한다.

29. Reference counting

std::shared_ptr로 레퍼런스 카운팅을 쓰자.

30. Proxy classes

다른 클래스의 인터페이스를 수정해 제공하는 프록시 클래스를 구현할 수 있다.

31. Making functions virtual with respect to more than one object

std::function과 std::variant 기반을 통해 여러 오브젝트에 대한 가상 함수를 구현할 수 있다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중