해설 - 클래스를 사용하여 문제를 풀었습니다. - Stu.h Stu.cpp 2004_final_1.cpp 이렇게 구성되어 있으며 클래스내 맴버 구성은 아래와 같습니다. - m_Add() 맴버 함수는 맴버 변수에 저장될 자료의 추가를 m_Print() 맴버함수는 맴버 변수를 출력하고 m_Check() 는 y / n 값을 받아 y 이면 종료를 다른 값이면 n 을 받아 리턴하여 반복 할것인지 판정하는 함수 입니다.
- Visual C++ 에서 프로그램상 클래스를 추가하는 방법입니다. 조금은 복잡하지만 이걸 알아 두면 나중에 복잡한 클래스 코드를 쉽게 구현할수 있습니다.
Workspace 창에 보면 ClassView 이라는 창이 있습니다. 그곳에서 프로젝트 명을 오른쪽 버튼을 클릭 New Class... 를 선택하세요
클래스의 종류와 이름을 선택하세요 여기서는 Generic Class 만 선택할수 있습니다. 상속이나 기타 다른 설정은 여기서 할 필요 없습니다.
맴버 함수와 변수를 만들고 선택하세요. m_Add() m_Print() m_Check() 는 외부 main 함수 내에서 쓰기 때문에 public 으로 선언하시고 맴버 변수인 spName, spSid, spDepart 는 맴버 함수들에 의해서만 쓰여질 것이기 때문에 private 로 하시면 됩니다.
코드를 완성하세요. 위에 쓰여진대로 쓰시거나 원하시는 코드를 넣으시면 됩니다. 단 쓰여질 범위는 클래스를 정의하는 cpp 파일에서 하시는게 좋습니다. 기본 마법사 툴에서 그렇게 하게 제공합니다.
완성된 클래스의 형태입니다. 이렇게 하시면 Stu 라는 객체가 완성이 되는 것입니다.
파일 구조는 아래와 같습니다.
잊지 마셔야 할 것은 그 함수를 쓰거나 자료형을 쓸려면 꼭 include 시켜줘야 하는 것입니다. 컴파일러는 프로젝트내에 파일이 열려있다는 사실만으로는 그 파일이 필요한지 그 자료형이 필요해서 자동으로 넣어 주지는 않습니다.
int i_Volumn(int iX, int iY, int iZ) { return iX * iY * iZ; }
int main(void) { cHexahedron cHex[3]; for(int i = 0; i < 3; i++) { cout << i + 1 << "번째 "; cHex[i].v_GetValue(); }
for(i = 0; i < 3; i++) { cout << i + 1 << "번째 "; cHex[i].v_Print(); }
return 0; }
해설 - 클래스와 함수 구조입니다.
- iX 와 iY, IZ 는 private 로 보호된 맴버 변수 입니다. private 는 클래스의 맴버가 아닌 다른 외부 함수에서 불러다 쓸수 없습니다. 이를 정보 보호 / 은닉이라 하는데 자료의 효율적인 관리를 목적으로 만들어진 것입니다. 예외적으로 friend 함수를 두어 private 맴버라도 불러다 쓸수 있게 합니다. public 영역에서 friend 를 선언하여 남용을 방지 합니다.
- 맴버 함수에서는 부른 객체 자신을 가리키는 this 객체가 기본적으로 존재 합니다. 이를 생략해서 그냥 iX, iY, iZ 를 써서 쓸수 있지만 이를 표기하여 this.iX this.iY this.iZ 로 쓸수 있습니다. 맴버 함수에서는 자신이 속한 클래스 객체의 맴버 변수를 쓸수 있으므로 private 로 선언된 맴버 변수도 자유롭게 쓸수 있습니다.
- "i + 1 번째 " 만 따로 출력하여 공통된 부분의 출력부를 최소화 했습니다.
참고 - 클래스는 C++ 의 가장 두들어진 객체지향적 특징입니다. C 에서는 극히 일부 기능을 구조체에서 제공하고 있습니다. 클래스는 잠깐 공부하기 보다 아래 페이지에서 자세히 공부 하시는게 이후 C++ 의 클래스를 이해하시는데 도움이 될 것입니다.