소프트웨어/C++

[2005년 기말 8번] 직원 급여 관리 - 이중 포인터 / 클래스 / 생성자 / inline / 동적 배열 생성

카켈 2007. 3. 9. 23:58



목적
  - 배열을 동적으로 생성시키고 클래스에다가 적용시킨다.
  - inline 함수에 대해 이해한다.
  - 생성자를 활용한다.
  - 이중 포인터에 대한 이해를 한다.

문제


코드


해설
  - 복사 생성사는 매너(?) 상 넣었습니다. 포인터 맴버 변수를 가진 클래스에서는 언제 쓰일지 모르기 때문에 써주시는게 예상치 못한 오류를 막는데 도움이 될수 있습니다.

  - inline 함수들만 정의 되어 있어서 굳이 Employee.cpp 파일을 작성할 필요가 없습니다. Employee.h 에서 다 정의 했습니다.

  - 코드에 해설이 주석으로 직접적으로 쓰여져 있습니다.

  - 이번엔 이중 포인터라는 중요한 개념을 익혔습니다. 일차포인터 배열은 가리키는 주소가 스택에 있기 때문에 그 크기가 변할수 없지만 이중포인터로 이차원으로 선언했을때에는 가리키는 주소가 힙에 저장되기 때문에 배열의 크기가 코드상에서 동적으로 지정이 가능합니다. 중요한 조언을 주신 선배님께 감사드립니다.

  - cin 으로 엔터키를 입력하면 엔터 값이 버퍼에 남아 있기 때문에 cin.getline 을 해버리면 넘어가버리는 문제가 있었습니다. cin.ignore(1,'\n') 버퍼에서 값을 가져올때 첫번째 '\n' (줄내림) 까지 값을 무시하고 받는다고 명령을 넣고 다음 키 입력 getline 함수를 이용하여 저장을 할수 있습니다.

  - 동적 배열을 구현할수 있지만 사용자 정의된 클래스에서는 약간 복잡해집니다. 따라서 MFC 나 STL 에서 동적 배열을 구현하는 자료형을 제공합니다.

  - inline 함수는 일반함수의 개념보다 매크로의 개념이 강합니다. 해당 함수가 호출되었을때 inline으로 저장이된 구문이 함수를 호출한 코드에서 복사/붙여넣기 처럼 그 자리에서 실행을 합니다. 원래 함수는 호출 -> 현재 상태 저장 -> 복귀값 저장 -> 처리 -> 이전 상태 복귀 -> 리턴값과 함께 이전 상태로 복귀 이런 식으로 가는데, inline 함수는 코드 호출 -> 치환 -> 수행 -> 리턴값 이런식으로 간단하게 수행됩니다. 수행 시간이 짧아지는 장점과 동시에 코드가 그떄 그때 붙어버리는 바람에 커져버리는 단점이 있습니다. 구조체나 클래스 처럼 마지막에 } 하면서 세미콜론을 잊지 마시기 바랍니다. 정의의 마지막에는 꼭 필요합니다.


참고
  - http://www.winapi.co.kr/clec/cpp1/10-4-1.htm 
: 이중 포인터
  - http://www.winapi.co.kr/clec/cpp2/19-1-2.htm
 : 동적 배열
  - http://www.borlandforum.com/impboard/impboard.dll?action=read&db=component&no=441

    : 구조체를 동적 배열로 관리할 수 있는 클래스 - 동적 배열 응용 예
  - 유사 문제 검색