내가 추상 클래스에 대한 포인터의 배열을 말한다. 나는 다른 자리에 pieces
과 Queen
의 자리에 King
을 할당 : 나는 할당 연산자를 오버로드하지 않은 경우 발생이로 인해 개체 조각이 생깁니 까?</p> <pre><code>Piece *pieces[2]; // where piece is an abstract class </code></pre> <p>을 그리고 <code>Piece</code>라는 <code>King</code> 및 <code>Queen</code>을 확장하는 두 개의 클래스가 있습니다
pieces[0] = new King();
pieces[1] = new Queen();
슬라이스는 무엇입니까? 또는 pieces[0]
이 King
의 인스턴스이고 pieces[1]
이 Queen
의 인스턴스입니까? 배열에서 무슨 일이 일어나고 있는지 (C++ 일 경우)?
편집 : 문제의 코드 예제 here을 참조하십시오.
컴파일러 오류가없는 것처럼 가장 할 수는 있지만 결과 코드가 무엇인지 알 수있는 척할 수는 없습니다. 코드를 실제 C++로 수정하십시오. –
@BenjaminLindley 오케이, 나는 내 질문에 가장 좋은 것이라고 생각하는 것으로 바 꾸었습니다. 나는 내 코드를 통해 잘못된 질문을 묘사하고 싶지 않았기 때문에 원래 코드가 구문에 대해 걱정하지 않고 아이디어를 묘사하도록 만들었습니다. –
반갑습니다. 한 가지를 고쳐서 (역 참조 ('*') 제거), 다른 것을 파기했습니다 ('new' 대신'&'). 이제 코드가 컴파일되지만 수행중인 작업은 정의되지 않은 동작입니다 (작동하는 것처럼 보일지라도). 임시 객체를 만든 다음 주소를 저장하고 있습니다. 그러지 마. –