일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- baekjoon
- 자소서
- C++
- 백준
- 리트코드
- git
- LeetCode
- GitHub Desktop
- 제노블레이드 2
- 프로그래머스
- 취준
- DP
- SRE
- 알고리즘 종류 정리
- Algorithmus
- 백트래킹
- 코딩테스트
- 격리수준
- ASF-110
- 네이버 검색 시스템
- Github
- 프로콘 갈림현상
- 알고리즘
- python3
- Ultimate Search
- 프로콘
- Pro-Con
- Python
- programmers
- algorithm
- Today
- Total
목록프로그래밍 서적/More Effective C++ (3)
산타는 없다
참조 카운팅(Reference counting)이란 여러 개의 객체들이 똑같은 값을 가졌으면, 그 객체들로 하여금 그 값을 나타내는 하나의 데이터를 공유하게 해서 데이터의 양을 절약하는 기법 이 기법에는 두 가지 목표가 있다 첫째, 힙 객체를 둘러싼 내부 정보를 유지하는 작업을 단순하게 하자 둘째, 똑같은 값을 가지고 있는 객체들이 그 값을 하나씩 꿰어차도록 놔두는 것은 낭비이므로 그 값을 나타내는 데이터 하나만 공유하게 하면 여러모로 이득이다. 참조 카운팅은 기본적으로 이렇게 구현합니다. 참조 카운트가 저장되는 위치는 굳이 객체 내부에 있을 필요가 없다. 실제 객체 하나에 대해서 참조 카운트는 하나만 잇으면 되기 때문에 참조 카운트와 값을 묶어서 관리해도 된다. 따라서, 참조 카운트와 값을 저장하는 클..
기본 포인터 대신 스마트 포인터를 사용 해야하는 이유 생성(construction)과 소멸(destruction) 작업을 조절할 수 있다. - 생성되고 소멸되는 시기를 결정할 수 있으며, 기본값 0(null)을 가지기 때문에, 값을 주지 않으면 초기화되지 않는 기본 포인터가 일으키는 문제를 원천적으로 봉쇄한다. 복사(copy)와 대입(assignment) 동작을 조절할 수 있다. - 스마트 포인터가 복사되거나 대입될 때 일어나는 일을 결정할 수 있다. 역참조(dereferencing) 동작을 조절할 수 있다. - 사용자가 스마트 포인터가 가리키는 객체를 가져오려고 할 때 어떤 일이 일어날지 결정할 수 있다. 스마트 포인터는 템플릿 기반으로 만들어진다. 그 이유는 가리킬 타입이 정확하게 지정되어야 하기 때..
포인터와 참조자는 모두 다른 객체를 간접적으로 참조할 수 있게 하는 것입니다. 하지만 완전히 같은 것은 아니기 때문에 사용하는 시기를 잘 구분해야 합니다. 참조자 특징 널 참조자는 없다 초기화될 때 참조했던 그 객체만 참조한다 참조자는 위와 같은 특징을 가지기 때문에 포인터와 참조자를 쓸 시기를 구분할 수 있습니다. 포인터를 사용해야 하는 상황 가리킬 객체의 주소가 없을 때 하나의 변수를 가지고 여러 개의 객체를 바꾸어 참조할 때 참조자를 사용해야 하는 상황 참조할 포인터가 처음부터 끝까지 존재할 것임을 알고 있을 때 참조하는 대상 객체를 바꿀 필요가 없을 때 포인터를 사용하면 문법상 의미가 어색해지는 연산자를 구현할 때 참조자를 사용해야 하는 세 가지 경우를 제외하고는 포인터를 사용하는 것이 좋습니다.