C++ Namespace
·
C++/Syntax
namespace 함수, 객체 등의 이름 충돌 방지 namespace 내부에 또 다른 namespace를 넣을 수 있다.
C++ 헤더가드 (Header Guard)
·
C++/Syntax
헤더 가드 (Header Guard) #include guard internal include guard : 헤더파일 내부에서 매크로를 검사하는 것 header.h #ifndef HEADER_H # define HEADER_H ... #endif external include guard : 헤더파일을 외부에서 include할 때 매크로를 검사하는 것 main.cpp #ifndef HEADER_H #include "header.h" #endif 장점 컴파일러에 의존하지 않는다. 단점 한 번 읽은 헤더 파일도 내용을 읽어야 해서 컴파일 속도가 느릴 수 있다. 귀찮지만 external include guard를 적용하면 해결 가능하다. 매크로 이름이 충돌할 가능성 존재한다. 대규모 프로젝트에선 명명 규칙을 정..
C++ 초기화 (Initialization)
·
C++/Syntax
초기화 (Initialization) C에서는 솔직히 별로 의미가 없었다고 생각하는데, C++에서는 생성자의 개념 때문에 중요한 것 같다. 메모리를 할당함과 동시에 값을 부여한다. 할당 생성자에서 값을 대입하는 방식이다. int num; num = 42; 초기화 초기화 리스트로 지정 Copy Initialization 등호를 통해 초기화하는 방식이다. int width = 5; Direct Initialization 소괄호로 값을 감싸서 초기화하는 방식이다. int width(5); Uniform Initialization List Initialization, Brace Initialization C++11 위의 두 가지(Copy Initialization, Direct Initialization)보다 ..