전역 클래스를 대체 할 수 없더라도 클래스 별 버전의 배치를 제공 할 수 있습니다. 클래스가 자체 배치 new 연산자를 제공해야하는 시나리오는 무엇입니까?클래스 별 버전의 새로운 게재 위치에서해야 할 일은 무엇입니까?
내 클래스가 placement new를 구현하지 않아도 다음 코드가 작동합니다. abc 연산자 new가 오버로드 된 경우를 가정합니다.
char arr[100];
abc *pt = new(&arr)abc;
그래서 내가 몇 가지 기본 배치 새로운 존재, 해석하지만, 클래스에 대해 우리는 new 연산자의 우리의 자신의 버전을 제공 할 수 있습니다, 내 질문은에 대한 사용 사례는 무엇입니까? 다른 포인터가 무엇을하고 나서 전달 된 동일한 포인터를 반환해야합니까? 거기에 유용한 예제/시나리오가 있습니까?
Abhay, 당신이 제공 한 스레드가 새로운 배치 필요성에 대해 토론합니다. 제 질문은 왜 기본 구현 대신 자신의 구현을 제공할까요? – Learner
@learner : 기본 게재 위치 새로 만들기와 같은 것은 없습니다. 프로그래머는 하나를 제공해야하며 그 이유가 명시되어 있습니다. 일반적으로 클래스별로 이루어 지므로 복사 시멘틱 (C++ 코딩 표준 - Item 45, Sutter 및 Alexandrescu 참조)에주의해야 할 디자인 문제입니다. – Abhay
@Abhay : 다음 코드는 클래스 클래스 donot이 배치를 새로 구현하더라도 작동합니다. char arr [100]; abc * pt = new (& arr) abc; 그래서 기본 배치가 새로 추가 되었습니까? 클래스에서 우리는 우리 자신의 버전을 제공 할 수 있습니다. 제 질문은 그것의 유스 케이스입니까? 그 중 하나가 다른 포인터로 전달 된 동일한 포인터를 반환해야합니다? 거기에 유용한 예제/시나리오가 있습니까? – Learner