득이공간

[Effective C++] 1장. C++에 왔으면 C++의 법을 따릅시다 본문

PS/C++

[Effective C++] 1장. C++에 왔으면 C++의 법을 따릅시다

쟁득 2024. 10. 21. 22:04
해당 게시물은 프로텍 미디어의 'Effective C++'를 읽고
학습한 내용을 개인적으로 요약한 글입니다.

📌 목차 - 1장. C++에 왔으면 C++의 법을 따릅시다

1-1. C++를 언어들의 연합체로 바라보는 안목은 필수

1-2. #define을 쓰려거든 const, enum, inline을 떠올리자

1-3. 낌새만 보이면 const를 들이대 보자!

1-4. 객체를 사용하기 전에 반드시 그 객체를 초기화하자


📌 1-1. C++를 언어들의 연합체로 바라보는 안목은 필수

  • C++를 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다. 그 경우란, 바로 C++의 어떤 부분을 사용하느냐다.
  • C++를 구성하는 네 가지 부분은 C, 객체 지향 개념의 C++, 템플릿 C++, STL이다.

📌 1-2. #define을 쓰려거든 const, enum, inline을 떠올리자

  • 단순한 상수를 쓸 때는, #define보다 const 객체 혹은 enum을 우선 생각하자.
  • 함수처럼 쓰이는 매크로를 만들려면, #define 매크로보다 인라인 함수를 우선 생각하자.

📌 1-3. 낌새만 보이면 const를 들이대 보자!

  • const를 붙여 선언하면 컴파일러가 사용상의 에러를 잡아내는 데 도움을 준다. const는 어떤 유효범위에 있는 객체에도 붙을 수 있으며, 함수 매개변수 및 반환 타입에도 붙을 수 있으며, 멤버 함수에도 붙을 수 있다.
  • 컴파일러 쪽에서 보면 비트수준 상수성을 지켜야 하지만, 우리는 개념적인(논리적인) 상수성을 사용해서 프로그래밍해야 한다.
  • 상수 멤버 및 비상수 멤버 함수가 기능적으로 서로 똑같게 구현되어 있을 경우에는 코드 중복을 피하는 것이 좋은데, 이때 비상수 버전이 상수 버전을 호출하도록 만들자.

📌 1-4. 객체를 사용하기 전에 반드시 그 객체를 초기화하자

  • 기본제공 타입의 객체는 직접 손으로 초기화하자. 경우에 따라 저절로 되기도 하고 안되기도 하기 때문이다.
  • 생성자에서는, 데이터 멤버에 대한 대입문을 생성자 본문 내부에 넣는 방법으로 멤버를 초기화하지 말고 멤버 초기화 리스트를 즐겨 사용하자. 그리고 초기화 리스트에 데이터 멤버를 나열할 때는 클래스에 각 데이터 멤버가 선언된 순서와 똑같이 나열하자.
  • 여러 번역 단위에 있는 비지역 정적 객체들의 초기화 순서 문제는 피해서 설계해야 한다. 비지역 정적 객체를 지역 정적 객체로 바꾸면 된다.

'PS > C++' 카테고리의 다른 글

[Effective C++] 2장. 생성자, 소멸자 및 대입 연산자  (0) 2024.11.02
[C++ 문법 정리] 2. C++ 기본  (0) 2024.02.03
[C++ 문법 정리] 1. C++ 기초  (0) 2024.02.03