일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 포인터
- 언리얼엔진5
- 언리얼 엔진5
- CPP
- Unreal Engine5
- 프로그래밍
- UE5
- 언리얼5
- 게임 개발
- 게임개발
- 배열
- 언리얼
- 언리얼엔진
- cpp개발
- AI
- 프로세스
- Unreal
- C++
- 자료구조
- BehaviorTree
- 디자인패턴
- 데이터구조
- 게임프로그래밍패턴
- 소멸자
- 생성자
- Unreal Engine
- 복사대입연산자
- C언어
- 복사생성자
- effectivec++
- Today
- Total
목록C++/효과적인 C++ (5)
리얼 개발
항목 18 : 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자좋은 인터페이스는 제대로 쓰기에 쉬우며 엉터리로 쓰기에 어렵다. 인터페이스를 만들 때는 이 특성을 지닐 수 있도록 고민하자.인터페이스의 올바른 사용을 이끄는 방법으로 는 인터페이스 사이의 일관성을 잡아주기, 그리고 기본제공 타입과의 동작 호환성 유지하기가 있다.사용자의 실수를 방지하는 방법으로는 새로운 타입 만들기, 타입에 대한 연산을 제한하기, 객체의 값에 대해 제약 걸기, 자원 관리 작업을 사용자 책임으로 놓지 않기가 있다. 항목 19 : 클래스 설계는 타입 설계와 똑같이 취급하자C++에서 새로운 클래스를 정의한다는 것은 새로운 타입을 하나 정의하는 것과 같다.효과적인 클래스를 설계하기 위한 고려사항들새로 정의한 타입의 ..
항목 13 : 자원 관리에는 객체가 그만!아래의 코드를 생각해보자void Func(){ Klass* klass = new Klass; ... delete Klass;}함수 끝의 delete에 도달하기 전에 … 에서 어떤 일이 벌어져서 자원 해제가 되지 않을 수 있다.이런 일을 예방하기 위해 자원을 획득하면 자원 관리 객체에 넘기도록 하자.자원 획득 즉 초기화 (Resource Acquisition Is Initialization : RAII)자원 관리 객체는 자신의 소멸자를 사용해서 자원히 확실히 해제되도록 한다.스마트 포인터는 자원 관리 객체 중 하나이다. 요약사람은 언제나 실수를 안할 수 없다. 자원 누출을 막기 위해, RAII 객체를 사용하도록 하자. 항목 14 : 자원 관리 클래스의 복사 ..
2. 생성자, 소멸자 및 대입 연산자클래스에 꼭 한개 이상 들어있는 생성자와 소멸자, 대입 연산자를 어떻게 잘 사용하는 방법항목 5 : C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자.C++에서 빈 클래스를 만들면 컴파일러가 저절로 선언해주는 함수들이 있다.생성자 (다른 생성자를 만들지 않은 경우)복사 생성자대입 연산자소멸자class Empty {};//아래와 같다/********************************************************************/class Empty{public: Empty() {} Empty(const Empty& rhs) {} ~Empty() {} Empty& operator=(const Empty& rhs) {}};/*****..
1. C++에 왔으면 C++의 법을 따릅시다.항목1 : C++를 언어들의 연합체로 바라보는 안목은 필수C++은 다음 4가지 하위 언어들의 연합체이다.C언어C++은 여전히 C를 기본으로 하고 있다.블록, 문장, 선행 처리자, 기본제공 데이터 타입, 배열, 포인터 등 모든 것이 C에서 왔다.객체 지향 개념의 C++클래스를 쓰는 C클래스, 캡슐화, 상속, 다형성, 가상 함수 등템플릿 C++C++의 일반화 프로그래밍새로운 프로그래밍 패러다임인 템플릿 메타프로그래밍(template metaprograming : TMP)이 파생STLStandard Template Library의 줄임말컨테이너, 반복자, 알고리즘, 함수 객체(*) C++을 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다. 그 경우란, 바로 ..
C++ 개발자들은 반드시 읽어야 할 정도로 좋은 도서인 Effective C++ 을 읽고 정리하는 글 입니다. 용어 정의선언코드에 사용되는 ‘어떤 대상’의 이름과 타입을 컴파일러에게 알려 주는 것이다. 하지만 구체적인 세부사항은 선언에 들어 있지 않다. 예를 들어, 다음과 같은 것들이 선언이다.extern int x; //객체 선언std::size_t numDigits(int number); //함수 선언class Widget; //클래스 선언template //템플릿 선언class GraphNode;함수의 시그니처numDigits의 경우 std::size_t(int)int 하나를 취하고 std::size_t를 반환하는 함수라는 의미 정의선언에서 빠진 구체적인 세부사항을 컴파일러에게 제공하는 것이다. ..