vec_A의 요소에 대한 포인터를 배열 A* a_ptrs[3]
에 저장합니다. vec_A의 크기가 조정되지 않는다고 가정하십시오. 따라서 a_ptrs[i]
은 올바른 요소를 가리 킵니다.일부 객체에 대한 포인터를 저장하는 배열 삭제
내 질문은 :
가정하자 A * a_ptrs [3]은 class B
에 선언되어있다. 왜냐하면 그것은 'new'를 사용하여 생성되지 않았기 때문에 소멸자에서 삭제할 필요가 없다고 생각합니다. 내가 맞습니까?
class A {
public:
int getNumber();
A(int val);
~A(){};
private:
int num;
};
A::A(int val){
num = val;
};
int A::getNumber(){
return num;
};
int main(){
int i =0;
int num;
std::vector<A> vec_A;
for (i = 0; i < 10; i++){
vec_A.push_back(A(i));
}
A* a_ptrs[3];
a_ptrs[0] = &vec_A[0];
a_ptrs[1] = &vec_A[3];
a_ptrs[2] = &vec_A[5];
for (i = 0; i<3; i++){
std::cout<<"\n: a_ptrs[i].getNumber() = "<<a_ptrs[i]->getNumber();
}
std::cout << "\nPress RETURN to continue...";
std::cin.get();
return 0;
}
배열을 삭제해야하는 경우'delete foo;'(배열 삭제 대 스칼라 삭제)뿐만 아니라'delete [] foo;'를해야합니다. 지적했듯이, 아니, 여기에서는 필요 없습니다. –