일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 영화 리뷰
- 암시적 변환
- 상속
- effective stl
- 참조자
- 반복자
- 함수 객체
- 오블완
- 다형성
- exception
- 예외
- c++
- 비교 함수 객체
- Effective c++
- UE4
- Smart Pointer
- operator new
- lua
- 티스토리챌린지
- 메타테이블
- reference
- virtual function
- 게임
- more effective c++
- 언리얼
- 스마트 포인터
- resource management class
- implicit conversion
- 루아
- 영화
- Today
- Total
목록개발/More Effective C++ (35)
스토리텔링 개발자
항목 3 : 배열과 다형성은 같은 수준으로 놓고 볼 것이 아니다. 상속성이 주는 혜택기본 클래스 객체의 포인터나 참조자를 통해 파생 클래스 객체를 조작할 수 있다.즉, 다형성을 가지고 있다.파생 클래스 객체의 배열을 기본 클래스 포인터나 참조자를 통해 조작할 수 있다.하지만, 이게 정말 바랬던 일일까..? 기본 클래스 배열 대신 파생 클래스 배열을 사용하는 경우class BST { ... };class BalancedBST : public BST { ... };void printBSTArray(ostream& s, const BST array[], int numElements){ for(int i = 0 ; i 두 번째 printBSTArray는 미정의 결과이다. 배열과 포인터array[..
항목 2 : 가능한 C++ 스타일의 캐스트를 즐겨 쓰자. C 스타일 캐스트의 문제점타입을 다른 타입으로 제한 없이 바꾸어준다.어떤 객체의 상수성(copnstness)만을 바꾼다.기본 클래스 객체에 대한 포인터를 파생 클래스 객체에 대한 포인터로 바꾼다.위 둘은 전혀 다른 캐스트지만, C 스타일 캐스트는 이 모든 걸 별 말 없이 소화해버리기 때문에 위험하다.C 스타일 캐스트는 눈으로 찾아내기가 힘들다.식별자를 괄호로 둘러싼 것일 뿐이기 때문이다.int firstNumber, secondNumber;...// c 스타일 캐스트double result = ((double)firstNumber) / secondNumber;// c++ 스타일 캐스트// 인간의 눈이나 프로그램이나 발견하기 쉬운 캐스트doubl..
항목 1 : 포인터와 참조자를 구분하자 포인터와 참조자의 차이참조자 개념에선 '널 참조자(null reference)'라는 것이 없다. 즉,포인터 사용어떤 변수가 참조하는 부분에 객체가 없을 수도 있는 상황.참조자 사용어떤 변수가 가리키는 메모리가 항상 유효한 객체여야 하는 상황C++ 스펙에 의하면 참조자는 선언될 때 반드시 초기화해야 한다.// 참조자의 경우string& rs; // 컴파일 에러. 초기화가 없다.string s("xyzzy");string& rs = s; // 컴파일 성공.// 포인터의 경우string* ps; // 초기화 되지 않은 포인터. 컴파일 성공. 허나, 무슨 값이 들어있을지..참조자는 중간에 다른 객체를 참조하게 할 수 없다.포인터의 경우다른 객체의 주소값으로 얼마든지 바..