주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. C++은 객체지향 언어입니다. 객체지향은 많은 프로그래머 사이에서 사랑받고 있습니다. 객체지향이 왜 이렇게 사랑받고, 자주 언급되는 것인지, 객체지향이 과연 어떠한 매력을 가지고 있는 것인지, 이번 시간부터 '상속'이라는 것을 배우면서 이해하게 됩니다. 상속에 대해 배울 때는 단순한 문법적인 요소만을 배우는 것이 아니라, 상속이 가져다주는 이점을 명확히 이해하는 것이 중요합니다. 상속을 이해하기 앞서 아래의 예제는 OrangeMedia라는 회사가 운영하는 '급여관리 시스템'입니다. 이 회사가 처음 이 시스템을 도입할 당시만 해도 직..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. C++에서는 멤버 변수와 멤버 함수에 static 선언을 추가할 수 있습니다. 이를 소개하기에 앞서 C언어에서 배웠던 static의 개념을 정리해보겠습니다. 전역 변수에 선언된 static의 의미 선언된 파일 내에서만 참조를 허용하겠다는 의미 함수 내에 선언된 static의 의미 한 번만 초기화되고, 지역변수와 달리 함수를 빠져나와도 소멸되지 않음 C++에서의 static이 지니는 의미를 이야기하기에 앞서, 간단한 예제 하나를 소개하겠습니다. 이 예제는 객체가 생성될 때마다 "n번째 객체가 생성되었습니다."라는 메시지를 출력하도록 ..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 클래스에 대한 friend 선언 클래스를 선언할 때 보통 멤버 변수들을 private으로 선언하고, 멤버 함수들을 public으로 선언해 왔습니다. private으로 선언한 멤버 변수는 클래스 외 다른 곳에서는 절대 접근할 수 없었습니다. 그런데 friend 선언을 통해 일부 다른 클래스에서 해당 클래스의 private 변수에 접근이 가능하도록 할 수 있습니다. 예를 들어보겠습니다. A클래스와 B클래스, 두 클래스가 선언되었습니다. 그리고 A클래스 안에서 B클래스를 friend 선언을 했습니다. 그렇게 되면 A클래스는 B클래스를 자..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. C언어와 달리 C++에서는 const와 관련해서 참으로 할 말이 많다고 이 책의 저자는 말합니다. 이번에는 const와 관련해서 보충 내용을 담는 것으로 시작합니다. 객체 상수화 다음과 같이 변수를 상수화하듯이 const int num = 10; 다음과 같이 객체도 상수화할 수 있습니다. const Simple sim(20); 그리고 이렇게 객체에 const 선언이 붙게 되면, 객체의 데이터 변경을 허용하지 않게 됩니다. 따라서 이 객체를 대상으로는 const 멤버 함수만 호출이 가능합니다. const 유무에 따른 함수 오버로딩 함..
※ 주의 사항 ※ 이 글의 목적은 '지식의 전달'이 아닌 '학습의 기록'입니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 지금까지는 다음과 같은 방식으로 변수와 참조자를 선언 및 초기화해 왔습니다. int num = 20l int &ref = num; 그런데 C++에서는 다음의 방식으로도 선언 및 초기화가 가능합니다. int num(20); int &ref(num); 이 방법은 멤버 이니셜 라이저를 사용해 멤버 변수를 초기화하는 것과 형태가 같습니다. 위 두 가지 초기화 방식은 결과적으로 동일하며, C++에서는 두 가지 방법 모두 지원하고 있습니다. 객체의 생성에 관해서도 이는 동일하게 작용합니다. 예를 들기 위해 아래와 같이 간단한 클..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 객체 배열 객체 배열과 객체 포인터 배열은 C언어를 공부하면서 다루었던 구조체 배열, 구조체 포인터 배열과 유사합니다. 객체 배열은 다음의 형태로 선언합니다. SoSimple arr[10]; //SoSimple은 클래스명 이를 동적으로 할당하는 경우에는 다음의 형태로 선언합니다. SoSimple * ptrArr = new SoSimple[10]; 객체 배열을 선언할 때는 주의해야 할 점이 있습니다. 앞서 객체를 생성하면 반드시 하나의 생성자가 호출이 되어야 한다고 했습니다. 이는 객체 배열에 대해서도 마찬가지입니다. 단, 객체 배열..