[Effective C++] item 01

TraceofLight·2024년 3월 12일
0

Effective-Cpp

목록 보기
2/2
post-thumbnail

C++은 멀티 패러다임 프로그래밍 언어

  • 처음에는 객체지향 기능이 추가된 C에서 시작

  • 현재 절차형, 객체 지향형, 함수형, 제네릭, 메타 프로그래밍까지 지원

    • 제네릭 프로그래밍: 데이터 형식에 구애받지 않도록, 하나의 값이 다양한 데이터 타입을 가질 수 있는 방향으로 재사용성을 극대화하는 프로그래밍 패러다임
    • 메타 프로그래밍: 자기 자신 혹은 다른 프로그램을 데이터로 취급하며 프로그램을 작성, 수정하는 것, 런타임에 수행해야 하는 작업의 일부를 컴파일 타임 동안 수행하는 방식을 말하기도 함
  • C++을 단일 언어가 아닌 언어의 연합으로 볼 필요가 있으며 각각의 룰에 맞춰줄 필요가 있다.

    • C: 다양한 것들이 C에서 유래했으나 C++에서 더 좋은 접근방식을 제공하는 경우가 많아 좀 더 제한적이고 안전한 범위로 사용할 수 있음
    • 객체지향 C++: 클래스가 존재하는 C++의 핵심, 객체 지향 설계가 가장 직접적으로 작용하는 부분
    • Template C++: 자주 경험하는 부분은 아니며, 주류 C++ 과 거의 상호작용하지 않는다. TMP라는 강력한 패러다임을 탄생시킨 바가 있다.
    • STL: Template 라이브러리이지만 매우 특별한 케이스, STL을 사용할 때는 특정한 방식이 존재하며 반드시 그 규칙을 따라야만 한다.
  • 위 하위 언어들 간의 전환이 발생한다면 전략을 변경하는 상황을 직면할 수 있다.

  • 단일 규칙이 아닌 각기 고유 규칙을 보유한 하위 언어의 집합체라는 것을 이해한다면 C++이 더욱 알기 쉬울 것

profile
24시간은 부족한 게 맞다

0개의 댓글