본문 바로가기

C++

C++ 면접 질문) "어떤 때 reference 쓰고 어떤 때 value를 써야 할까요?"

매개변수로 어떤 때 reference를 쓰고 어떤 때 value를 쓰는지 먼저 말씀드릴께요.

reference를 쓰는 기준:

  • 복사 비용이 클 때
void sub_process(const std::string& text) {
 // read text without copying
}
  • 원본 수정이 필요 할  때
void modify_value(int& value) {
  value += 1; // access value by reference
}

value를 쓰는 기준:

  • const reference 안쓰고 간결하게 사용 (복사 비용이 거의 없으므로)
int use_without_using_const(int value) {
  return value + 1;
}

int use_using_const_safely(const int& value) {
  return value + 1;
}
  • 복사 해서 쓰고 싶을 때
void copy_and_change(std::string str) {
  str.append("def");
}

반환값으로 어떤 때 reference를 쓰고 어떤 때 value를 쓰는지 먼저 말씀드릴께요.

reference를 쓰는 기준:

  • 수정 가능한 기존 객체 반환 시
Object& get_object_reference() {
  return this->object;
}

value를 쓰는 기준:

  • 객체 복사본 반환 시
Object create_object(const Object& origin) {
  return origin // 복사 생성자 호출 되어 origin의 복사본이 반환됨
}

C++ 면접 질문) "빌드 시 컴파일러에서 일어나는 과정에 대해 설명해주세요."