주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 이번 Chapter에서는 객체지향에서 가장 중요하다고 할 수 있는 '다형성'을 공부합니다. 그리고 앞서 제시한 '오렌지 미디어 급여 관리 확장성 문제'를 해결하게 됩니다. 객체 포인터와 참조 관계 이전에 제시한 예제들을 통해서도 보았듯이, 클래스를 기반으로도 포인터 변수를 선언할 수 있습니다. 예를 들어 Person이라는 이름의 클래스가 정의되었다면, Person 객체의 주소 값 저장을 위해서 다음과 같이 포인터 변수를 선언할 수 있습니다. Person* ptr; ptr = new Person; 그런데 Person형 포인터는 Per..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. C++은 객체지향 언어입니다. 객체지향은 많은 프로그래머 사이에서 사랑받고 있습니다. 객체지향이 왜 이렇게 사랑받고, 자주 언급되는 것인지, 객체지향이 과연 어떠한 매력을 가지고 있는 것인지, 이번 시간부터 '상속'이라는 것을 배우면서 이해하게 됩니다. 상속에 대해 배울 때는 단순한 문법적인 요소만을 배우는 것이 아니라, 상속이 가져다주는 이점을 명확히 이해하는 것이 중요합니다. 상속을 이해하기 앞서 아래의 예제는 OrangeMedia라는 회사가 운영하는 '급여관리 시스템'입니다. 이 회사가 처음 이 시스템을 도입할 당시만 해도 직..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. C++에서는 멤버 변수와 멤버 함수에 static 선언을 추가할 수 있습니다. 이를 소개하기에 앞서 C언어에서 배웠던 static의 개념을 정리해보겠습니다. 전역 변수에 선언된 static의 의미 선언된 파일 내에서만 참조를 허용하겠다는 의미 함수 내에 선언된 static의 의미 한 번만 초기화되고, 지역변수와 달리 함수를 빠져나와도 소멸되지 않음 C++에서의 static이 지니는 의미를 이야기하기에 앞서, 간단한 예제 하나를 소개하겠습니다. 이 예제는 객체가 생성될 때마다 "n번째 객체가 생성되었습니다."라는 메시지를 출력하도록 ..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 클래스에 대한 friend 선언 클래스를 선언할 때 보통 멤버 변수들을 private으로 선언하고, 멤버 함수들을 public으로 선언해 왔습니다. private으로 선언한 멤버 변수는 클래스 외 다른 곳에서는 절대 접근할 수 없었습니다. 그런데 friend 선언을 통해 일부 다른 클래스에서 해당 클래스의 private 변수에 접근이 가능하도록 할 수 있습니다. 예를 들어보겠습니다. A클래스와 B클래스, 두 클래스가 선언되었습니다. 그리고 A클래스 안에서 B클래스를 friend 선언을 했습니다. 그렇게 되면 A클래스는 B클래스를 자..