연산자 new의 다양한 형태를 배울 때 접했는데(c++ 입문서에서는 설명이 별로 없었음) 이 함수 호출을 사용하여 구현하는 방법 등 이 함수의 역할을 이해할 수 없었습니다placement new
的构造效果, 比如这样two *abc = new(m) two(10);
(이 구조를 봤음에도 불구하고) 실제로 위 함수도 호출됩니다.) 그리고 테스트 예시는 다음과 같습니다. (문제가 주석 처리되었습니다.)
여기에서는 문제를 더욱 단순화하고 자세히 설명하겠습니다.
이 기능이 구축 효과를 얻을 수 있는 이유는 two *abc = new(m) two(10);
为例, 我没有(或者说不知道怎么在step into进去)能看清具体实现, 虽然我知道抽象出来就是实现了就地构造了two(10)
이 개체입니다.
같은 효과를 얻기 위해 main()
函数注释处这样直接调用函数的做法来实现就地构造, 我该如何修改参数和传入参数实现 two *abc = new(m) two(10);
를 사용하면 어떨까요?
PS:
초기 추측 중 하나는 전달된 _Where 포인터가 이미 생성된 객체에 대한 포인터여야 한다는 것이었습니다. 그러나 이런 방식으로 구현되면 이미 객체가 있어야 하며 이는 placement new
.
/q/10... @felix Dashi님이 이미 이 질문에 대한 답변을 주셨는데요, 방금 보고 생각해보고 관련 내용을 찾아보겠습니다