티스토리 툴바

연습문제 7-1)
문제1]
다음 클래스는 은행 계좌 정보를 담을 수 있도록 정의되어 있는 Account 클래스이다.
class Account
{
private:
    char acc_num[10];   // 계좌 번호
    int balance;      // 계좌 잔액
    public:
    Account (char* num, int bal)
    {
       strcpy(acc_num, num);
       balance = bal;
    }
};
위 클래스를 public 상속하는 KBAccount 클래스를 정의해 보자. KBAccount 클래스는 Account 클래스가 지니고 있는 멤버 변수 이외에 고객별 이체 한도 정보를 담고 있는 멤버 변수 (trans_limit)를 지녀야 한다. 다음에 제시하고 있는 main 함수의 예와 실행 결과를 참조해서 정의하기 바란다.

  • main 함수의 예
int main(void)
{
    //계좌 번호: 1234-5678
    // 초기 입금액: 5000원
    // 이체 한도: 100000원
    KBAccount acc("1234-5678", 5000 100000);
    acc.ShowData();
    return 0;
};
  • 실행 결과
계좌 번호: 1234-5678
계좌 잔액: 5000원
이체 한도: 100000원

구루마루의 답안 보기


연습문제 7-2)
문제1] 예제 BasicInheri4.cpp에서 Person 클래스와 Student 클래스를 디자인하였다. 그런데 Person  클래스의 멤버 변수 name과 Student 클래스의 멤버 변수 major는 배열의 형태로 선언되어 있다. 따라서 생성되는 모든 객체는 동일한 형태의 메모리 공간을 할당받게 될 것이다.

이제 Person 클래스와 Student 클래스를 변경해 보자. 멤버 변수 name과 major를 문자열 포인터(char*)로 선언하고, 생성자 내에서 문자열의 길이에 따라서 메모리 공간을 동적 할당하는 형태로 변경해 보자. 앞에서 복사 생서자를 공부할 때 접해 봤던 형태이다.

처음 접할 경우, 결코 쉬운 문제가 아니므로 복습을 한다는 생각을 가지고 천천히 해결해 보기 바란다. 참고로 여러분은 Person 클래스와 Student 클래스에서 생성자, 소멸자, 뿐만 아니라 복사 생성자까지 정의해야 한다.

여러분이 정의한 클래스는 다음의 main 함수와 더불어 무리 없이 실행되어야 한다.

  • main 함수의 예
int main()
{
    Student Hong1(20, "Hong Gil Dong", "computer");
    Hong1.ShowData();
    Student Hong2 = Hong1;
    Hong2.ShowData();
    return 0;
}
  • 실행 결과
이름: Hong Gil Dong
나이: 20
전공: computer
이름: Hong Gil Dong
나이: 20
전공: computer

구루마루의 답안 보기

크리에이티브 커먼즈 라이선스
Creative Commons License