Chapter 4 설계 및 선언
* 인터페이스 설계는 제대로 쓰기는 쉽게, 엉터리로 쓰기에는 어렵게 한다.
예를들어 어떤 객체나 함수에 값을 전달하는데 잘못된 값 또는 잘못된 범위를 입력하면 오류가 발생하도록 만드는 등의 설계가 필요함.
* 멤버함수에서 객체를 생성하는 경우 객체의 포인터를 반환하기 보다 애초에 스마트 포인터를 반환하는 것이 문제의 소지를 덜 발생시킨다.
* 실수를 방지하는 방법
- 새로운 타입 만들기
- 타입에 대한 연산을 제한하기
- 객체의 값에 대해 제약 걸기
- 자원 관리 작업을 사용자 책임으로 놓지 않기
* 스마트포인터(shared_ptr)은 교차 DLL 문제를 미연에 방지해준다.
* 값에 의한 전달(pass-by-value)보다는 상수객체 참조자에 의한 전달(pass-by-reference) 방식을 택하는 편이 대개 낫다.
- 값에 의한 전달로 객체를 받을 경우 복사생성자에 의해 생성되며 다시 소멸이 이루어진다. 엄청난 비용이 소모됨. 복사손실 문제까지 막아준다.
- 기본제공 타입(char, int 등), STL 반복자, 함수객체 타입에 대해서는 값에 의한 전달이 더 적절하다.
'프로그래밍 > 공부' 카테고리의 다른 글
[자료구조] 힙 (0) | 2022.07.23 |
---|---|
[자료구조] 트리, 그래프 (0) | 2022.07.23 |
Effective C++ [3] 자원관리 (0) | 2015.07.09 |
Effective C++ [2] 생성자, 소멸자 및 대입 연산자 (0) | 2015.07.08 |
Effective C++ [1] C++에 왔으면 C++의 법을 따릅시다 (0) | 2015.07.08 |