항목 12. 생성자에서 치환보다는 초기화를 사용한다.
이유. 2008/05/31 12:57 수정
1. const와 레퍼런스 멤버들을 초기화 할 수 없다,
1. const 멤버 객체와 와 레퍼런스 멤버 객체는 초기화 순간에만 초기화를 할수 있다.
2. 초기화 보다 연산이 한단계 더 많아 진다.
2. 대입연산자(치환)은 이미 초기화 순서를 지나친것이기 때문에 1단계 많은 연산을 하게 되는것이다.
참조
1 클래스의 생성은 이 두단계를 거친다.
첫번째. 데이터 멤버의 초기화
두번째. 호출된 생성자의 코드가 실행된다.
2. const와 레퍼런스는 항상 생성자 초기화에서만 할수 있다.
3. 클래스내부에선 정적상수만이 초기화 할수 있다
해결 방법
1. 대입연산자 보다는 멤버초기화 리스트 구역을 사용 한다.
주의점
1. 생성자 초기화 중, 너무 많은 멤버 변수들을 초기화 할 경우 오히려 가독성과 오류 발생 요인이 된다.
주의점 타파 방법
1. 초기화 화가 필요한 변수를 초기화 하는 함수를 만든다.
2. private 에 올린다.
3. 생성자에서 const와 레퍼런스를 초기화 시킨다.
4. 생성자 내부에서 초기화 함수를 실행시킨다.
개인적인 생각
- 부분의 최적화는 용량이 큰 객체를 초기화를 여러개 할때 더욱 빛을 바랠수 있다고 생각된다.
이유. 2008/05/31 12:57 수정
1. const와 레퍼런스 멤버들을 초기화 할 수 없다,
1. const 멤버 객체와 와 레퍼런스 멤버 객체는 초기화 순간에만 초기화를 할수 있다.
2. 초기화 보다 연산이 한단계 더 많아 진다.
2. 대입연산자(치환)은 이미 초기화 순서를 지나친것이기 때문에 1단계 많은 연산을 하게 되는것이다.
참조
1 클래스의 생성은 이 두단계를 거친다.
첫번째. 데이터 멤버의 초기화
두번째. 호출된 생성자의 코드가 실행된다.
2. const와 레퍼런스는 항상 생성자 초기화에서만 할수 있다.
3. 클래스내부에선 정적상수만이 초기화 할수 있다
해결 방법
1. 대입연산자 보다는 멤버초기화 리스트 구역을 사용 한다.
주의점
1. 생성자 초기화 중, 너무 많은 멤버 변수들을 초기화 할 경우 오히려 가독성과 오류 발생 요인이 된다.
주의점 타파 방법
1. 초기화 화가 필요한 변수를 초기화 하는 함수를 만든다.
2. private 에 올린다.
3. 생성자에서 const와 레퍼런스를 초기화 시킨다.
4. 생성자 내부에서 초기화 함수를 실행시킨다.
개인적인 생각
- 부분의 최적화는 용량이 큰 객체를 초기화를 여러개 할때 더욱 빛을 바랠수 있다고 생각된다.
'책 정리 > Effective C++ 2판' 카테고리의 다른 글
항목 17. operator=에서 재귀치환을 검사한다. (0) | 2008.05.08 |
---|---|
항목 16. operator=에서 모든 데이터 멤버들로의 치환을 수행한다. (0) | 2008.05.08 |
항목 15. operator= 이 *this에 대한 레퍼런스(reference)를 리턴(return)하도록 한다. (0) | 2008.05.08 |
항목 14. 베이스 클래스에서 소멸자는 가상 함수로 선언해야 한다. (0) | 2008.05.08 |
항목 13. 클래스에 선언된 순서에 따라 멤버 초기화 리스트에 멤버들을 나열한다. (0) | 2008.05.07 |
항목 11. 동적으로 할당되는 메모리를 갖는 클래스를 위해서는 복사 생성자와 치환 연산자를 선언하라 (0) | 2008.05.07 |
2부까지 종료 (0) | 2008.05.07 |
항목 10. operator new를 작성한다면 operator delete도 작성한다. (0) | 2008.05.07 |
항목 9. new의 "정상"형식을 감추지 않는다. (0) | 2008.05.07 |
항목 8. operator new와 operator delete 작성시 관례를 따른다. (0) | 2008.05.07 |
최근댓글