모두의 코드 커뮤니티

Stl vector에 사용자class를 삽입하는 경우, 동적할당문제

사용자class를 vector로 관리할때, vector에 class를 넣는 과정에서 동적할당 없이 하면 문제가 되지 않나요? 예를들어서
ex)
class cat,
vector<“class cat”>cats (<>만 쓰면 글 등록시에 내용이 없어져서 ""를 붙였어요)

  void bringCat()
  {
      cat1 = cat(black, 5 ,cute);
      cats.push_back(cat1);
  } 

이렇게 하는 경우에 bringCat함수를 빠져나오면서 지역변수 cat1은 파괴되고 결국 vector cats에 들어간 cat1도 삭제될거라 생각했는데요. 벡터에 cat1이 계속 남아있더라구요.
제가 혹시 놓치고 있는 부분이 있을까요?

좋아요 1

push_back 에서 cat1 객체가 복사되서 들어가므로 삭제되지 않습니다.

아 감사합니다 재범님 ㅎㅎ
혹시 위와같은 내용을 찾는방법 알 수 있을까요?

만약에 재범님이 위와같은 궁금즘이 생겼다면
어떻게 찾아봤을까요?

좋아요 1

push_back 의 레퍼런스를 찾아보면

constexpr void push_back( const T& value );
constexpr void push_back( T&& value );

두 가지 버전이 있습니다. 위는 값을 복사해서 받는 경우고, 아래는 원소를 이동 시켜서 받는 경우 (질문자님이 걱정한 케이스) 인데, 아래의 함수가 호출되려면 우측값으로 전달해야 합니다. 그런데 질문자님의 경우는 좌측값 이므로 복사되서 값을 받게 됩니다.