일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 네이버 검색 시스템
- Pro-Con
- 리트코드
- programmers
- Ultimate Search
- git
- 알고리즘
- algorithm
- 격리수준
- GitHub Desktop
- 취준
- baekjoon
- 알고리즘 종류 정리
- SRE
- Github
- DP
- python3
- 코딩테스트
- Python
- ASF-110
- 백트래킹
- 자소서
- 프로그래머스
- 프로콘 갈림현상
- C++
- 백준
- LeetCode
- 프로콘
- Algorithmus
- 제노블레이드 2
- Today
- Total
목록프로그래밍 서적 (11)
산타는 없다
기본 포인터 대신 스마트 포인터를 사용 해야하는 이유 생성(construction)과 소멸(destruction) 작업을 조절할 수 있다. - 생성되고 소멸되는 시기를 결정할 수 있으며, 기본값 0(null)을 가지기 때문에, 값을 주지 않으면 초기화되지 않는 기본 포인터가 일으키는 문제를 원천적으로 봉쇄한다. 복사(copy)와 대입(assignment) 동작을 조절할 수 있다. - 스마트 포인터가 복사되거나 대입될 때 일어나는 일을 결정할 수 있다. 역참조(dereferencing) 동작을 조절할 수 있다. - 사용자가 스마트 포인터가 가리키는 객체를 가져오려고 할 때 어떤 일이 일어날지 결정할 수 있다. 스마트 포인터는 템플릿 기반으로 만들어진다. 그 이유는 가리킬 타입이 정확하게 지정되어야 하기 때..
포인터와 참조자는 모두 다른 객체를 간접적으로 참조할 수 있게 하는 것입니다. 하지만 완전히 같은 것은 아니기 때문에 사용하는 시기를 잘 구분해야 합니다. 참조자 특징 널 참조자는 없다 초기화될 때 참조했던 그 객체만 참조한다 참조자는 위와 같은 특징을 가지기 때문에 포인터와 참조자를 쓸 시기를 구분할 수 있습니다. 포인터를 사용해야 하는 상황 가리킬 객체의 주소가 없을 때 하나의 변수를 가지고 여러 개의 객체를 바꾸어 참조할 때 참조자를 사용해야 하는 상황 참조할 포인터가 처음부터 끝까지 존재할 것임을 알고 있을 때 참조하는 대상 객체를 바꿀 필요가 없을 때 포인터를 사용하면 문법상 의미가 어색해지는 연산자를 구현할 때 참조자를 사용해야 하는 세 가지 경우를 제외하고는 포인터를 사용하는 것이 좋습니다.
#define CALL_WITH_MAX (a, b) ((a) > (b) ? (a) : (b)) int main() { int x = 5, y = 0; CALL_WITH_MAX(++x, y); CALL_WITH_MAX(++x, y + 10); } 위와 같은 매크로 함수가 있을 때 CALL_WITH_MAX(++x, y); 이후의 x의 값은 7이 되고 CALL_WITH_MAX(++x, y + 10); 이후의 x의 값은 8이 된다 그 이유는 일반 함수와 다르게 매크로 함수는 값이 치환되는 개념이기 때문이다 CALL_WITH_MAX(++x, y) -> ((++x) > (y) ? (++x) : (y)) 로 치환되어 비교할 때 한번 그리고 결과를 반환할 때 한번 더 증가되어 총 두 번 증가된다. CALL_WITH_M..