일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- AI
- 언리얼
- Unreal Engine
- 복사생성자
- 프로세스
- 데이터구조
- 포인터
- 생성자
- Unreal
- CPP
- cpp개발
- UE5
- BehaviorTree
- 게임개발
- 배열
- C++
- 언리얼5
- 소멸자
- 언리얼엔진
- C언어
- effectivec++
- 자료구조
- 복사대입연산자
- 언리얼 엔진5
- 프로그래밍
- 디자인패턴
- Unreal Engine5
- 게임 개발
- 언리얼엔진5
- 게임프로그래밍패턴
Archives
- Today
- Total
리얼 개발
[Effective C++] 공부 정리 1 본문
C++ 개발자들은 반드시 읽어야 할 정도로 좋은 도서인 Effective C++ 을 읽고 정리하는 글 입니다.
용어 정의
선언
- 코드에 사용되는 ‘어떤 대상’의 이름과 타입을 컴파일러에게 알려 주는 것이다. 하지만 구체적인 세부사항은 선언에 들어 있지 않다. 예를 들어, 다음과 같은 것들이 선언이다.
extern int x; //객체 선언
std::size_t numDigits(int number); //함수 선언
class Widget; //클래스 선언
template<typename T> //템플릿 선언
class GraphNode;
- 함수의 시그니처
- numDigits의 경우 std::size_t(int)
- int 하나를 취하고 std::size_t를 반환하는 함수라는 의미
정의
- 선언에서 빠진 구체적인 세부사항을 컴파일러에게 제공하는 것이다. 객체의 경우에 있어서 정의는 컴파일러가 그 객체에 대한 메모리를 마련해 놓은 부분이 된다. 함수나 함수 템플릿에 대한 정의는 그들에 대한 코드 본문(body)을 제공하는 것이고, 클래스 혹은 클래스 템플릿의 경우에는 그 클래스 혹은 템플릿의 멤버를 넣어 준 결과가 정의이다.
int x; //객체 정의
std::size_t numDigits(int number) //함수 정의
{
std::size_t digitsSoFar = 1;
while((number /= 10) != 0) ++digitsSoFar;
return digitsSoFar;
}
class Widget //클래스 정의
{
public:
Widget();
~Widget();
};
template<typename T> //템플릿 정의
class GraphNode
{
public:
GraphNode();
~GraphNode();
}
초기화
- 어떤 객체에 최초의 값을 부여하는 과정이다. 사용자 정의 타입으로 생성한 객체의 경우, 초기화는 생성자에 의해 이루어진다.
- 기본 생성자(default constructor)
- 어떤 인자도 주어지지 않은 채로 호출될 수 있는 생성자.
- explicit → 암시적 형변환을 막아준다.
- 복사 생성자(copy constructor)
- 어떤 객체가 새로 정의될 때 불린다.
- 복사 대입 연산자(copy assignment operator)
TR1 / Boost
- TR1
- C++ 표준 라이브러리에 새로 추가되는 기능들에 대한 명세이다.
- 새로 추가된 기능들은 클래스 및 함수 템플릿이 주류인데, 해시 테이블, 참조 카운팅 방식 스마트 포인터, 정규 표현식 등이다.
- TR1의 모든 구성요소는 tr1 네임스페이스에 들어 있고, tr1 네임스페이스는 std 네임스페이스 안에 중첩되어 있다.
- Boost
- 오픈소스 C++ 라이브러리를 제공하는 단체이다.
'C++ > 효과적인 C++' 카테고리의 다른 글
[Effective C++] 공부 정리 5 (0) | 2024.10.25 |
---|---|
[Effective C++] 공부 정리 4 (0) | 2024.08.20 |
[Effective C++] 공부 정리 3 (0) | 2024.07.13 |
[Effective C++] 공부 정리 2 (0) | 2024.07.13 |