일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스마트 포인터
- c++
- Smart Pointer
- implicit conversion
- implicit creation function
- reference
- exception
- operator new
- resource management class
- Effective c++
- 예외
- lua
- 게임
- 언리얼
- 영화 리뷰
- 메타테이블
- 자원 관리 객체
- 루아
- 암시적 변환
- 상속
- more effective c++
- UE4
- 암시적 생성 함수
- 자원 관리 클래스
- 영화
- inheritance
- 참조자
- virtual function
- multiple inheritance
- 다형성
- Today
- Total
목록2024/10 (4)
스토리텔링 개발자
항목 33. 상속 관계의 말단에 있지 않은(non-leaf) 클래스는 반드시 추상 클래스로 만들자 대입 문제class Animal{public: Animal& operator=(const Animal& rhs); ...};class Lizard : public Aanimal{public: Lizard& operator=(const Lizard& rhs); ...};class Chicken : public Animal{public: Chicken& operator=(const Chicken& rhs); ...};Lizard liz1;Lizard liz2;Animal* pAnimal1 = &liz1;Animal* pAnimal2 = &liz2;...*pAnimal1 = *..
항목 32. 미래 지향적인 프로그래머가 되자 미래 지향적인 프로그래밍사용하고 있는 라이브러리에 함수가 새로 추가될 수 있으며오버로딩도 추가로 이루어질 수 있다는 사실을 인식하고,이 사실로 인해 모호한 함수 호출이 있을 수 있다는 점을 조심하자.기존의 클래스 계통 구조에 새 클래스가 추가될 수 있고,오늘의 파생 클래스가 내일의 기본 클래스가 될 수 있다는 사실을 인식하고 대비하자.새로운 애플리케이션이 만들어질 수 있고,특정 함수의 호출환경이 달라질 수 있다는 사실을 기억하고,이런 함수가 어느 경우에서든 제대로 동작하도록 만들자.소프트웨어 유지 보수를 만든 사람이 맡지 않는 경우가 다반사이므로,다른 사람이 이해하고, 수정하고, 개선하는 데 큰 문제를 일으키지 않는 방법으로 설계하자. 주석이나 문서화 ..
항목 31. 함수를 두 개 이상의 객체(타입)에 대해 가상 함수처럼 동작하도록 만들기 우주선, 정거장, 소행성 의 충돌 구현class GameObject { ... };// 아래의 각 타입은 충돌 타입에 따라 충돌 시 다른 동작을 한다.class SpaceShip : public GameObject { ... };class SpaceStation : public GameObject { ... };class Asteroid : public GameObject { ... };void checkForCollision(GameObject& object1, GameObject& object2){ if(theyJustCollided(object1, object2)) { // 아래 함수의 ..
항목 30. 프록시(Proxy) 클래스 C++의 n차원 배열 문제변수를 배열의 차원으로 사용할 수가 없다.int data[10][20]; // 컴파일 성공void processInput(int dim1, int dim2){ int data[dim1][dim2]; // 컴파일 에러! ...}void processInput2(int dim1, int dim2){ int* data = new int[dim1][dim2]; // 컴파일 에러! ...} 2차원 배열 클래스 만들기templateclass Array2D{public: Array2D(int dim1, int dim2); ...};// 이런 식으로 사용할 수 있다.Array2D data(10, 20);Array2D..