[ Effective C++ ] 정리 모음집
" C++ 프로그래머의 필독서, 스콧 마이어스의 Effective C++ 를 읽고 내용 요약 / 정리 "
" 생성 · 소멸자를 끌고 다니는 타입은 변수 정의 시 반드시 생성 · 소멸자 호출 비용을 물게 된다! "
- 변수 정의는 늦출 수 있을 때까지 늦추자, 프로그램이 더 깔끔해지며 효울도 좋아진다!
- 쓰지도 않을 객체가 만들어졌다 없어지는 일 방지
- 불필요한 기본 생성자 호출 방지
- 변수의 의미가 명확해져 쓰임새를 문서화 하기 좋아진다
[예시 코드]
string encryptPassword(const string& password)
{
string encrypted;
if(password.length() <MinimumPasswordLength)
{
throw logic_error("패스워드가 너무 짧아");
}
...
return encryted;
}
[예시 코드]
string encryptPassword(const string& password)
{
...
string encrypted;
encrypted = password;
encrypt(encrypted);
return encryted;
}
[예시 코드]
string encryptPassword(const string& password)
{
...
string encrypted(password);
encrypt(encrypted);
return encryted;
}
📢 루프 안에서 쓰이는 변수의 경우에는...?
Widget w;
for (int i = 0; i < n; ++i)
{
w = i;
};
for (int i = 0; i < n; ++i)
{
Widget w(i);
};
[ 비용 비교 ]
A 방법 : 생성자 1번, 소멸자 1번, 대입 n번
B 방법 : 생성자 n번, 소멸자 n번
- 대입에 들어가는 비용이 생성 · 소멸자 보다 적게 나온다면 A방법, 반대의 경우 B방법이 효율이 좋다!
- A방법이 B방법보다 변수의 유효범위가 늘어나 프로그램 이해도, 유지보수 측면에서 좋지 못함!