본문 바로가기

Programming/C++

Effective C++ 정리글(펌)

Effective C++

 

  

Scott Meyers

연승훈, 표광준 역

Eclipse(김주현) 정리


 

C에서 C++로의 전환

 

 

 

 

※ 메모리관리

 


 

8.      operator new delete 작성시 관례를 따른다.(skip)

9.      new정상형식을 감추지 않는다.(skip)

10.   operator new를 작성한다면 operator delete도 작성한다.(skip)

※ 생성자, 소멸자, 그리고 치환 연산자

 

 

 

 

15.   operator= this*에 대한 레퍼런스를 리턴하도록 한다.(skip)

16.   operator=에서 모든 데이터 멤버들로의 치환을 수행한다.(skip)

 


 

 

※ 클래스와 함수: 설계 및 선언

* 클래스 정의시 유의 사항

1)        객체들이 어떻게 생성되고 소멸될 것인가?

: 이것이 얼마나 강력하게 수행되느냐하는 것은 생성자와 소멸자의 설계에 영향을 미친다.

 

2)        객체 초기화와 객체 치환이 어느 정도 차이가 나는가?

: 이 질문에 대한 해답은 생성자와 치환 연산자의 동작 및 차이점을 결정한다.

 

3)        새로운 타입의 객체를 값에 의해 전달하는 것은 무엇을 의미하는가?

: 복사 생성자는 객체를 값으로 전달하는 것이 의미하는 바를 정의한다는 것을 기억한다.

 

4)        새로운 타입상에 적법한 값을 위한 제약점은 무엇인가?

: 이 제약사항은 멤버 합수, 특히 생성자와 치환 연산자 내부에서 수행할 에러 검사의 종류를 결정한다. 그것은 또한 함수의 예외사항을 이용할 경우 함수가 제기하는 예외사항들에 영향을 미칠 수도 있다.

 

5)        새로운 타입이 상속 그래프에 맞는가?

: 만일 기존 클래스로부터 상속된다면 그 클래스의 설계에 의해, 특히 상속한 함수가 가상(virtual)인지의 여부에 의해 제한을 받는다.

 

6)        어떤 종류의 타입 변환이 허용되는가?

: 만일 타입 A의 객체가 내부적으로 타입B의 객체로 변환되는 것을 허용하기를 원한다면 클래스 A에서 타입 변환 함수를 작성하거나 클래스 B에서 단일 인자로 호출될 수 있는 내부적인 생성자를 작성해야 할 것이다. 만일 명시적 변환만을 허용하기 원한다면 변환을 위한 수행하기 위한 함수들을 작성해야 하며 그들을 타입 변환 연산자나 내부적인 단일 인자 생성자로 만드는 것을 피해야 한다.

 

7)        어던 연산자와 함수가 새로운 타입을 위해 적당한가?

: 이 질문에 대한 대답은 클래스 인터페이스에서 어떤 함수들을 선언할 것인가를 결정한다.

 

8)        어떤 표준 연산자와 함수들이 명시적으로 허용되지 말아야 하는가?

: 그러한 것들은 private로 선언될 필요가 있는 것이다.

9)        누가 새로운 타입의 멤버에 접근하여야 하는가?

: 이 질문은 어떤 멤버들이 public 또는 private인지를 결정하는데 큰 도움을 준다.

 

10)     새로운 타입은 얼마나 일반적인가?

:실제 새로운 타입을 정의하지 않고 모든 계열의 타입들을 정의하고 있다면 새로운 클래스를 정의할 것이 아니라 새로운 클래스 템플릿을 정의하여야 한다.

 

 

 

19.   멤버 함수, 비멤버 함수 및 프렌드 함수를 구별한다.(skip)

20.   데이터 멤버를 공용 인터페이스에 포함시키지 않는다.(skip)

  

 

 

24.   함수 오버로딩과 디폴트 인자값 중에서 주의깊게 선택한다.(skip)


 

 

27.   의도하지 않은 내부 생성 멤버 함수의 이용을 명시적으로 막는다.(skip)

 

 

※ 클래스와 함수 : 구현


 

30.   접근하기 어려운 멤버에 대한 비상수 포인터나 레퍼런스를 리턴하는 멤버 함수 사용을 피하라.(29.와 이유가 같음)

 

 


 


 

※ 인스턴스와 객체지향 설계

35.   public 계승이 “is a(‘~ ~이다’)관계를 모델링하도록 하라.(skip)

36.   인터페이스 계승과 구현 계승의 차이점을 이해하라.(skip)


 

 

  

 

41.   계승과 템플릿과의 차이점을 이해한다.(skip)

 

 

 

 

 

 

※ 미묘한 부분

 

 

 

 

 

50.   C++에 대한 이해를 넓혀라.(skip)

[출처]
Effective C++ 정리|작성자 이클립스

'Programming > C++' 카테고리의 다른 글

win32 프로젝트에서 콘솔창(dos) 띄우기  (0) 2012.07.03
try – catch, throw  (0) 2010.01.05
비트 연산자  (0) 2009.11.21
namespace Declaration  (0) 2009.11.20
friend 함수  (0) 2009.11.20