C++에서 벡터에 객체를 추가하고 해당 객체에 대한 포인터를 삭제하면 벡터 내의 객체도 삭제됩니까? 예를 들어벡터에 추가 한 후 포인터 할당 삭제
,
int i = 0;
std::vector<A> aVect;
while(i++ < 10)
{
A *ptrToA = new A();
aVect.push_back(*ptrToA);
delete ptrToA;
}
는 여전히 전화를 유효한 것 :
aVect.at(2);
의지를 단지 벡터에 추가 된 객체를 파괴, 또는 것 "삭제"에 대한 호출 포인터의 객체를 할당 해제 하시겠습니까?
그것은 aVect''의 내용을 파괴하지 않지만'A'가 제대로 자원을 스스로 관리 할 내부 동적 할당을 사용 않는 경우는 *'aVect' 내에서 일부'A' * 콘텐츠를 파괴 할 수있다 . 특히, 가상 파괴, 복사 건설 및 복사 할당. 자세한 내용은 [The Rule of Three] (http://en.wikipedia.org/wiki/Rule_of_three_ (C % 2B % 2B_programming))를 참조하십시오. – WhozCraig