- MoreEffectiveC++/Basic
class EquipmentPiece {
EquipmentPiece(int IDNumber);
해당 EquipmentPiece 는 기본 생성자가 부실(?) 하다. 이건 크게 '''3가지의 주제'''로 설명할수 있다.
EquipmentPiece bestPieces[10];
EquipmentPiece bestPieces = new EquipmentPiece[10];
EquipmentPiece bestPiece[] = {
EquipmentPiece(ID1),
EquipmentPiece(ID2),
EquipmentPiece(ID3),
EquipmentPiece(ID10),
typedef EquipmentPiece* PEP;
bestPiece[1] = new EquipmentPiece( ID Number );
void *rawMemory = operator new[](10*sizeof(EquipmentPiece));
EquipmentPiece *bestPieces = static_cast<EquipmentPiece*>(rawMemory);
new (bestPieces+1) EquipmentPiece ( ID Number ); // 이건 placement new 라고 하여 Item 8 에서 언급한다.
역시나 이것도 '''delete'''에 관한 모호성을 제공한다. 문제시 되는 점은 rawMemory상에 배치된 EquipmentPiece의 '''destructor''' 호출 유무이다. 예상대로 '''destructor'''를 강제 호출해 줘야 한다. 그래서 위가 아니라, 이런식의 삭제가 된다.
bestPieces[i].~EquipmentPiece(); // 언제나 느끼는 거지만 C++을 방종을 가져다 줄수 있다.
Found 1 matching page out of 7540 total pages
You can also click here to search title.