일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- resource management class
- 영화 리뷰
- lua
- more effective c++
- 게임
- operator new
- implicit conversion
- c++
- effective stl
- 언리얼
- UE4
- 암시적 변환
- 반복자
- 다형성
- 함수 객체
- Smart Pointer
- reference
- 영화
- virtual function
- Effective c++
- 비교 함수 객체
- 메타테이블
- 참조자
- exception
- effective modern c++
- 티스토리챌린지
- 오블완
- 상속
- 스마트 포인터
- 예외
- Today
- Total
목록분류 전체보기 (205)
스토리텔링 개발자
항목 5. C++가 은근슬쩍 만들어 호출해버리는 함수들에 촉각을 세우자. 암시적 생성 생성자, 복사 생성자, 복사 대입 연산자, 소멸자 직접 선언하지 않으면 컴파일러가 저절로 선언해준다.암시적 생성 되는 복사 관련 함수들은 얕은 복사를 한다. 암시적으로 생성된 함수들의 특징기본 생성, 소멸자기본 클래스 및 비정적 데이터 멤버의 생성자, 소멸자를 호출해주는 등의 작업을 한다.즉, 컴파일러에게 “배후의 코드”를 깔 수 있는 자리를 마련해준다.상속한 기본 클래스의 소멸자가 가상 소멸자가 아니라면 비가상 소멸자로 만들어진다.복사 생성자, 복사 대입 연산자원본 객체의 비정적 데이터를 사본 객체 쪽으로 그냥 복사한다.복사 생성자와 복사 대입 연산자는 근본적으로 동작 원리가 같다.복사 대입 연산자를 priva..
항목 4. 객체를 사용하기 전에 반드시 그 객체를 초기화하자 자동으로 하는 객체 초기화의 문제C++ 객체 초기화 규칙은 조금 복잡하다.그러므로 차라리 모든 객체를 사용하기 전에 초기화하는 것이 좋다. 초기화 시의 팁대입과 초기화를 헷갈리지 말자.대입 : 기본 생성자 호출 -> 복사 대입 연산자 호출초기화 리스트 사용 : 복사 생성자 호출 초기화란 생성자 본문이 실행되기 전에 되어야 하는 것이다.그러므로 멤버 초기화 리스트를 사용하자.클래스 멤버를 모두 초기화 리스트에 올리는 정책의 장점어떤 멤버가 초기화되지 않을 수 있다는 사실의 부담감이 없어진다.상수나 참조자 데이터 멤버는 대입이 불가능하다.즉, 반드시 초기화되어야 하므로 필수로 초기화 리스트에 넣어 주어야 한다. 객체를 구성하는 데이터의 ..
항목 3. 낌새만 보이면 const를 들이대보자 const소스코드 수준에서 외부 변경이 불가능하다는 의미적 제약을 붙이며, 컴파일러가 이 제약을 단단히 지켜준다.사용 범위전역 및 네임 스페이스 유효 범위 안에서 상수 선언(정의)시파일, 함수, 블록 유효 범위 내에서 static 객체 선언 시클래스 내 정적 / 비정적 데이터 멤버 선언 시포인터 자체 및 포인터가 가리키는 데이터 선언 시함수 선언 시함수 반환값을 상수로 하면 안전성과 효율에 더해 사용 시 에러도 감소한다.매개변수, 지역객체의 수정이 필요 없다면 const를 붙이자.상수 멤버 함수로 선언하는 것의 이점 : 상수 객체만 호출할 수 있는 함수임을 표기함으로써 용도를 확실히 한다. 상수 포인터 사용법* 을 기준으로 좌, 우에 붙는 const..
항목 2. #define을 쓰려거든 const, enum, inline을 떠올리자 선행 처리자(define)의 문제선행처리자는 컴파일러로 넘어가기 전에 숫자 상수로 대체된다.컴파일러 기호 테이블에 선행처리자 상수 이름은 들어가지 않는다.선행처리자의 이름으로 디버깅할 수 없다.선행처리자는 대부분 const로 대체 가능하므로 const로 대체하도록 하자. const 정의 시 주의할 점상수 포인터를 정의하는 경우, const를 붙여주는 위치를 주의해야 한다.포인터를 const로 할 것인가, 가리키는 대상을 const로 할 것인가에 따라 const 위치가 달라진다.차라리 둘 다 const를 붙여서 모호성을 제거해주는 게 나을 것이다. 클래스 멤버로 상수를 정의하는 경우static 멤버로 해주는 편이 좋..
항목 1. C++를 언어들의 집합체로 바라보는 안목은 필수 C++는 다중 패러다임 언어이며, 아래의 패러다임들을 포함한다.절차적 프로그래밍객체지향 프로그래밍함수형 프로그래밍일반화 프로그래밍메타 프로그래밍또한 하위 언어들의 집합이기도 하다.CC++템플릿 C++STL이 모든 것들의 집합체인 C++를 사용할 땐 각 패러다임과 하위 언어들을 적재적소에 써야 할 필요가 있다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/44j9v/btsHbfbwDlT/gxTXb2t8KtTvKuzJv6maI1/img.png)
골조가 없는 채로 건물을 세울 수 있을까? 관계, 그리고 상황들 역시 그럴 것이다. 우리는 골조라고 할 수 있는 여러 가지 맥락들을 읽어낸다. 이 상황이라면 의당 그럴 것이라고 믿는 구석들은 관계와 상황의 기초가 되어서 착실하게 형태를 구성해 나간다. 예컨대 소설에서는 클리셰라는 것이 바로 그 골조에 해당할 것이다. 상황과 상황 사이를 적절하게 상상할 수 있게 해주는 그 클리셰가 없다면 소설은 종횡무진 당최 이해할 수 없는 맥락으로 우리를 혼란시키기만 할 것이다. 즉, 적절한 클리셰(골조)는 소설(건물)의 형태를 굳건하게 세워준다. 영화는 크게 두 가지 사건으로 나뉘어져 있다. 첫 번째 사건은 어느 등산가가 정상에서 세 번 머리를 박으며 떨어져 사망한 사건이다. 사건의 맥락은 일목요연하다...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/E3TXb/btsGZWvtZfJ/2YxKoeptwVISNk86N8hXg1/img.png)
기본적으로 나는 추억하기를 참 좋아하는 사람인지라, 계속해서 반복해서 좋았던 시절을 떠올리며 시간을 보낸다. 그러고 보면 추억하기에 딱 좋은 계절이 바로 여름이다. 잠깐 떠올렸을 뿐인데도 시원한 바다와 청명한 하늘의 모습이 손에 잡힐 듯 선명하게 그려진다. 그 습하고 짠 공기, 흔하디 흔한 흘러간 여름 노래들이 코와 귀 앞을 맴돌고, 바스락거리는 모래와 축축한 자갈의 맨들맨들한 질감 같은 것들이 왠지 손 끝에 남아있는 듯하다. 하늘거리는 옷을 입고 뛰어다니는 아이들과 계곡물에 담가둔 수박, 텐트, 졸졸거리는 시냇물 소리, 밀짚모자를 쓴 할아버지, 자글거리는 삼겹살 굽는 소리 같은 게 연쇄적으로 떠오른다. 반면 객관적으로 생각해 보자면, 사계절 중 손에 꼽을 정도로 힘겨운 계절이 여름이기도 하다. 윙윙..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/crO6uD/btsGOvlbK6p/TKEKh6xfo7XkGKOvm9fHl0/img.png)
아직 분가를 하지 않았을 시절. 분명히 내가 어딘가에 잘 보관했다고 생각한 물건이 사라져 있는 상황이 왕왕 있었다. 누가 어디로 옮겼을까. 썼으면 원래 자리에 잘 놔둬야 하는 거 아니야? 동생인가? 아니면 방을 정리하던 중 엄마가? 당혹스러움이 분노로 변하는 과정은 점진적이면서 격정적이다. 그리고 한참 분개하며 방을 이리저리 들쑤시다가 전혀 엉뚱한 곳에서 물건이 등장하는 상황. 그곳에 그 물건이 있는 이유가 파노라마처럼 촤르륵 스쳐 지나가고 그 범인이 나였다는 것을 알게 되는 순간, 내 속을 가득 불태우던 그 감정은 물에 녹는 솜사탕처럼 사르르르 녹아버리는 바로 그런 상황. 상황 자체는 변한 것이 없지만 마음속은 마치 한 편의 영화나 마찬가지이다. 즉, 상황은 맥락에 따라 다르게 해석된다. 마치 '가족'..