Page 180

virtual void privateMethod(); int mPrivateInteger = 42; static const int kConstant = 2; static int sStaticInt;

// // // //

private private private private

메서드 데이터 멤버 상수

static 데이터 멤버

};

NOTE_ 이 코드를 보면 클래스를 정의할 때 할 수 있는 일을 모두 알 수 있다. 그런데 클래스를 직접 정의할

때는 가능하면 데이터 멤버를 public이나 protected로 선언하지 말고 모두 private로 만들어서 이를 접 근하는 작업은 public 또는 protected 게터나 세터로 처리하도록 구성하는 것이 좋다.

10장에서 설명했듯이 자신이 정의한 클래스를 다른 사람이 상속해서 쓸 수 있으므로 소멸자만 이라도 virtual로 선언하는 것이 좋다. 클래스를 final로 선언해서 다른 클래스에서 상속할 일 이 없을 때만 소멸자를 non-virtual 상태로 놔둔다. 소멸자를 virtual로 선언했지만 그 안에 코드를 구현할 필요가 없다면 앞에 나온 Simple 클래스 코드처럼 명시적으로 디폴트로 지정한다. 이 예제는 특수한 멤버 함수를 delete하거나 default로 지정하는 방법도 보여준다. 복제 생성 자와 복제 대입 연산자를 delete로 지정하면 대입과 값 전달 방식을 막을 수 있다. 한편 이동 생성자와 이동 대입 연산자를 default로 지정할 수 있다. 이제 이 클래스를 구현하는 코드를 살펴보자. 여기서 static 데이터 멤버를 초기화하는 방법도 볼 수 있다. #include "Simple.h" int Simple::sStaticInt = 0; // static 데이터 멤버 초기화 Simple::Simple() : mPublicInteger(40) { // 생성자 구현 코드 } void Simple::publicMethod() { /* public 메서드 구현 코드 */ } void Simple::protectedMethod() { /* protected 메서드 구현 코드 */ } void Simple::privateMethod() { /* private 메서드 구현 코드 */ }

1326 5부 C++ 소프트웨어 공학

Profile for 한빛미디어

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

Advertisement