변수 정의 최대한 늦추기(effective c++ 26)
2015. 8. 25. 17:48ㆍ프로그래밍/Effective C++
728x90
728x90
왜?
사용하지 않을 상황에 객체를 생성하여 필요 없는 생성자랑 소멸자를 호출하는 상황을 피할 수 있다.
객체생성에 필요한 모든 값을 받은 뒤 생성자에서 값을 초기화하여 필요 없는 대입을 막는다
예외가 발생하면 encrypted변수는 사용되지 않고 쓸데없는 생성자와 소멸자만 호출하고 사라짐.
방법. 객체를 예외 이후에, 대입 연산이 일어난다면 그냥 복사생성자로!
루프에서
A방법 : 생성자 1번 + 소멸자 1번 + 대입 n번
B방법 : 생성자 n번 + 소멸자 n번
대입에 들어가는 비용이 생성자 + 소멸자보다 적게 나온다면 A방법을 사용.
단 A방법은 w의 범위가 넓어지므로 유지보수에는 불리.
그 외에는 B방법을 사용한다.
정리
변수 정의는 늦출 수 있을 때까지 늦추는 것이 프로그램이 깔끔해지며 효율이 좋아진다.
728x90
반응형
'프로그래밍 > Effective C++' 카테고리의 다른 글
예외 안정성 확보(effective C++ 29) (0) | 2015.09.04 |
---|---|
내부에서 사용하는 객체의 핸들을 반환하는 코드는 NO(effective c++ 28) (0) | 2015.09.04 |
캐스팅 절약(effective c++ 27) (0) | 2015.09.04 |
예외를 던지지않는 swap(effective c++ 25) (0) | 2015.08.25 |
타입변환이 모든 매개변수에 적용된다면? 그 함수는 비멤버로(effective c++ 24) (0) | 2015.08.25 |
멤버 함수보단 비멤버 비프렌드 함수를!(effective c++ 23) (0) | 2015.08.25 |
데이터 멤버는 private(effective c++ 22) (0) | 2015.08.25 |