일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스코티쉬 스트레이트
- 냥이
- CDJ
- 고양이는 언제나 귀엽다
- 레스토랑
- 안동국시
- 냥냥
- 스테이크
- 파머스테이블
- CodeJam 2017 Round 1B
- coffee
- 데이트
- 커플
- 고양이
- 파버스
- A. Steed 2: Cruise Control
- RED CAT COFFEE X LOUNGE
- 소호정
- 먹기좋은곳
- 발산역 근처 카페
- 부모님과
- 치명적 귀여움
- 소호정본점
- 카페
- 발산맛집
- 냥스토리
- codejam
- 양재맛집
- 발산
- 스파게티
- Today
- Total
목록C++/Effective C++ (5)
hubring
항목 48: 템플릿 메타 프로그래밍, 하지 않겠는가? 템플릿 메타프로그래밍(template metaprogramming: TMP) 템플릿 메타프로그래밍 란? 컴파일 도중에 실행되는 템플릿 기반의 프로그램을 작성하는 일. C++ 컴파일러가 실행시키는, C++로 만들어진 프로그램. TMP 프로그램이 실행을 마친 후에 그 결과로 나온 출력물(템플릿으로부터 인스턴스화된 C++ 소스코드)이 다시 보통의 컴파일 과정을 거치는 것. 1990년 초 TMP개념이 발굴된 후 C++ 언어 및 표준라이브러리에 TMP를 용이하게 만드는 확장요소가 추가될 여지까지 생김. TMP의 강점 TMP를 쓰면 다른 방법으로 까다롭거나 불가능한 일을 쉽게 할 수 있음 C++ 컴파일이 진행되는 동안에 실행되기 때문에, 기존 작업을 런타임 영역..
const 큰 매력은 “의미적인 제약”(외부 변경을 불가능하게 함)을 코드 수준에서 붙이며 컴파일러에서 이 제약을 지켜줄 수 있다는 점이다. 또한 클래스 바깥에서 전역 혹은 네임스페이스 유효범위의 상수를 선언(정의)하는 데 쓸 수 있다.(항목 2 참조) 그 뿐아니라 파일, 함수, 블록 유효범위에서 static으로 선언한 객체에도 const를 붙일 수 있다. 클래스 내부의 경우에는, 정적 멤버 및 비정적 데이터 멤버 모두를 상수로 선언할 수 있다. 그렇다면 포인터의 경우는 어떨까? const 포인터 사용 포인터를 상수 지정 방법은 아래 3가지이다. 1. 포인터 자체를 상수 : char * const p 2. 포인터가 가리키는 데이터를 상수 : const char *p 3. 둘 다 상수로 지정 : const..
해당 항목 제목을 가급적 선행 처리자보다 컴파일러를 더 가까이 하자 로 가는게 더 괜찮았을 것 같다고 책에서 말하고 있다. (....지금 항목 제목이 더 잘 기억에 남을듯 하다.) #define의 문제 아래 코드를 썼다고 가정하자. #define ASPECT_RATIO 1.653 코드를 눈으로 볼 때는 ASPECT_RATIO가 기호식 이름으로 보이나 컴파일러에게는 선행 처리자가 해당 기호를 사용한 코드를 숫자 상수로 바꾸어 버리기 때문에 이름이 아닌 숫자로 보게된다. 만약 숫자 상수로 대체된 코드에서 컴파일 에러가 발생하게 되면 기호식 이름으로 알려주는 것이 아닌 숫자로 보이게 되어 에러의 원인을 찾는데 어려울 수 있다. 이 문제는 기호식 디버거에서도 나타날 소지가 있다. => 추가 예로 만약 #defi..
C++ 프로그래밍 개념 오늘날의 C++은 다중패러다임 프로그래밍 언어(multipradigm programming language)라고 불린다. 절차적(procedural), 객체 지향(object-oriented), 함수식(functional), 일반화(generic), 메타(meta) 프로그래밍의 개념까지 지원한다. 각 지원하는 프로그래밍 마다 적절한 사용 규칙이 존재한다. C++ 을 제대로 따라잡기 위해 여러 개의 하위 언어(4가지)에 대해 알아보고 각각의 프로그래밍 개념에 맞는 규칙을 적용할 수 있도록 하자. 1. C C++ 은 여전히 C를 기본으로 하고 있다. 따라서 C 언어 기능만 쏙 뽑아서 사용이 가능하다. 2. 객체 지향 개념 클래스(생성자와 소멸자), 캡슐화, 상속, 다향성, 가상 함수(..
Effective C++ 책의 목적 c++를 효과적으로 구사하는 방법 의도대로 동작하기 위한 지침과 조언을 모아둠. 구체적인 제안을 항목으로 55개를 묶어 소개함. 내용 부류 일반적 설계 전략 C++ 언어적 특징 실전 세부 사항 여러가지 선택과 의문점들 상속과 템플릿 사이에 선택해야 한다면? public 상속과 private 상속 사이에 골라야 한다면? private 상속과 클래스 합성 사이에서 어떻게 해야할까? 멤버 함수와 비 멤버 함수 중 하나를 선택할 경우에는? 값에 의한 전달과 참조에 의한 전달 중 무엇을 어떤 상황에서 집어야 할까? 대입 연산자는 어떤 타입을 반환해야 적당할까? 소멸자를 가상 함수로 만들어야 할 때는 언제일까? 충분한 메모리를 찾지 못했을 때 operator new는 어떻게 동작..