내일 배움 캠프 베이직 반 3강

김태완·2025년 1월 31일

오늘 강의 내용

오늘은 이전에 온라인 강의로 들었던 클래스 복사와 템플릿, stl에 대해서 복습하는 시간을 가졌다.

클래스의 복사

클래스의 복사는 얕은 복사와 깊은 복사로 나누어진다.

  • 얕은 복사

객체의 데이터를 복사하지만, 주소 값만을 복사하기 때문에 원본 객체가 변경되거나 삭제되면 복사된 객체도 영향을 받는다. 특히 원본 객체가 삭제되었을 경우 컴파일 오류가 발생할 수 있다.

  • 깊은 복사

메모리를 복사할 때 새로운 메모리 공간을 할당한 후 데이터를 복사하는 방식이다. 원본 객체와 복사된 객체가 서로 다른 메모리를 사용하므로 원본 객체를 변경하거나 삭제해도 복사된 객체에 영향을 주지 않는다.

따라서 일반적으로 객체를 복사하는 경우에 객체를 바로 복사하는 것 보다 객체의 데이터를 새로운 메모리에 할당하여 복사를 하는 것이 좋다.

템플릿

템플릿은 변수 타입을 정하지 않고 함수나 클래스를 만든 후, 나중에 타입을 지정할 수 있게 하는 방식이다.

  • 함수 템플릿

함수를 템플릿으로 만들 경우, 동일한 기능을 하는 다른 변수 타입의 함수들을 여러 개 만들 필요 없이 하나만 만들어 추후에 변수 타입을 설정할 수 있게된다.

  • 클래스 템플릿

함수 템플릿과 마찬가지로 타입 선언을 하지 않고 내부 객체들을 만들기에 다른 변수 타입이 필요한 경우 코드를 다시 작성하거나 수정할 필요가 없다.

하지만 템플릿은 일반 변수 선언보다 가독성이 좋지 않고, 오류가 발생했을 경우 컴파일러 상에서 알아보기 쉽지 않다는 점 등 단점도 있기 때문에 필요한 경우에만 사용하는 것이 좋다.

STL

STL이란 표준 템플릿 라이브러리(Standard Template Library)를 말한다.

프로그래밍에 사용하기 좋은 함수나 클래스 등을 모아놓은 도구 모음이라고 생각하면 좋다.

  • STL의 구성 요소

    • 컨테이너

      vector, list, set, map 등 다른 원소들을 보관하는 저장소이다.

    • 이터레이터

      iterator라는 식별자를 사용하여 컨테이너들을 순회하며 원소들에 접근이 가능하다.

    • 알고리즘

      컨테이너 등에 적용할 수 있는 함수 모음집이다.
      std::sort, std::find, std::count, std::replace 등이 있다.

마치며

오늘은 이전에 배운 내용들을 간단하게 정리하고 되짚어보는 시간을 가졌다. 전부 명칭과 어떤 역할을 하는지는 기억을 하고 있었던 것 같은데, 막상 코드를 들여보니 헷갈리고 아리송한 부분이 많았던 것 같다. 다음에 봤을 때는 그러지 않도록 더 숙지를 하도록 해야겟다.

0개의 댓글