[C++] 연산자 오버로딩 복습 문제 (클래스부터 생성자, 오버로딩까지 구현해보자)

2025. 8. 4. 02:19·C++

 

문제 1: RPG 장비 클래스 설계

문제 설명

게임 캐릭터가 장착할 수 있는 다음 4가지 아이템 클래스를 정의하려고 합니다.
각 클래스는 체력(HP), 마력(MP), 민첩성(AGI), 행운(LUK)의 능력치를 가지고 있으며, 생성자를 통해 초기화되어야 합니다.

다음 조건에 맞게 Clothing, Shoes, Cloak, Accessory 클래스를 각각 정의하시오.


요구 사항

  1. 각 클래스는 다음 멤버 변수를 가져야 합니다:
    • int hp, int mp, int agi, int luk
  2. 생성자에서 능력치 값을 임의로 초기화하세요.
    • 예: Clothing: 체력 10, 마력 5, 민첩성 3, 행운 1 등
    • 생성자의 종류는 두 가지여야 합니다. 예를들어 1) 임의로 자동 초기화 Clothing() 2) 매개변수로 전달Clothing(int hp_, int mp_, int agi_, int luk_)
  3. 각 클래스는 다음 멤버 함수를 포함해야 합니다:
    • int GetHP(), GetMP(), GetAGI(), GetLUK()
  4. 모든 클래스는 public 접근 제어자를 사용하세요.

예시 출력 (힌트용)

Clothing c;
cout << "Clothing HP: " << c.GetHP() << endl;  // Clothing HP: 10

 

문제 2: 장비 장착 시스템 구현

문제 설명

앞에서 만든 Clothing, Shoes, Cloak, Accessory 클래스들을 바탕으로 플레이어가 장비를 착용할 수 있는 EquipmentSlot 클래스를 작성해봅시다.

아래 조건에 맞게 클래스를 설계하고, 장비를 장착하는 함수를 구현하세요.


 

요구 사항

  1. 다음 객체를 미리 생성하시오:
    • Clothing 클래스의 객체: clo5 (5레벨 의복)
    • Shoes 클래스의 객체: shoes5 (5레벨 신발)
    • Cloak 클래스의 객체: cloak15 (15레벨 망토)
    • Accessory 클래스의 객체: acc15 (15레벨 장신구)
  2. EquipmentSlot 클래스를 정의하시오. 이 클래스는 다음 멤버를 가집니다:
    • Clothing* clothing
    • Shoes* shoes
    • Cloak* cloak
    • Accessory* accessory
  3. 다음 멤버 함수를 구현하시오:
    • void EquipClothing(Clothing* item);
    • void EquipShoes(Shoes* item);
    • void EquipCloak(Cloak* item);
    • void EquipAccessory(Accessory* item);
  4. 장착 후, 다음처럼 출력하면 각 장비의 능력치를 확인할 수 있어야 합니다:
slot.EquipClothing(&clo5);
slot.EquipShoes(&shoes5);
slot.EquipCloak(&cloak15);
slot.EquipAccessory(&acc15);

 


 

문제 3: 아이템 능력치 연산자 오버로딩

문제 설명

앞에서 생성한 Clothing, Shoes, Cloak, Accessory 클래스들은 각각 능력치를 가지고 있습니다.
이번에는 다음 규칙에 따라 두 아이템을 더하거나 빼는 연산자(+, -) (혹은 +=, -=)를 오버로딩하는 기능을 구현하세요.


규칙

  1. 5Lv 아이템은 -속성 (-=도 가능) (착용 시 능력치가 감소하는 저주 아이템이라고 가정)
  2. 15Lv 아이템은 +속성 ( +=도 가능) (능력치가 증가하는 강화 아이템이라고 가정)
  3. 각 아이템 클래스에서 + (or +=) 연산자는 다른 아이템과의 능력치를 더하는 연산을 구현하세요.
  4. - (or -=) 연산자는 다른 아이템과의 능력치를 빼는 연산을 구현하세요.
  5. 연산 결과는 새로운 임시 아이템 객체를 반환해야 합니다.

요구 사항 요약

  • 각 클래스(Clothing, Shoes, Cloak, Accessory)에 연산자 오버로딩 추가
    • Clothing operator+(const Clothing& other);
    • Clothing operator-(const Clothing& other);
      (Shoes, Cloak, Accessory도 동일)

 

마지막으로 장비슬롯을 출력하는 함수를 만들어주세요. ex) void printEquipmentSlot()

완벽한 정답은 없습니다.

아래는 참고만 해주세요 :)

 

 

 

 

'C++' 카테고리의 다른 글

[C++] const char* str와 char* const str의 차이  (1) 2025.08.05
[C++] 2차원 배열 선언과 동시에 초기화 vs 선언된 배열 초기화 : 재초기화 오류  (0) 2025.07.11
[C++] 지역 변수(Local Variable) 이름(변수명)과 전역 변수(Global Variable) 이름(변수명)이 같을 경우: Shadowing에 대해서  (0) 2025.07.11
'C++' 카테고리의 다른 글
  • [C++] const char* str와 char* const str의 차이
  • [C++] 2차원 배열 선언과 동시에 초기화 vs 선언된 배열 초기화 : 재초기화 오류
  • [C++] 지역 변수(Local Variable) 이름(변수명)과 전역 변수(Global Variable) 이름(변수명)이 같을 경우: Shadowing에 대해서
바닷속벨루가
바닷속벨루가
바다처럼 넓은 컴퓨터 공부를 재밌고 이해하기 쉽게 알려드립니다. 사랑하고 좋아하는 것에는 빠질 수 밖에 없어
  • 바닷속벨루가
    메론빵개발자
    바닷속벨루가
  • 전체
    오늘
    어제
    • 분류 전체보기 (24) N
      • 스프링 (0)
      • 영어 (2)
      • 2025 일상 (1)
      • C++ (4)
      • 웹 개발 (1)
      • 오토마타와형식언어 (2)
      • Coding Test (3)
        • 백준 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    press reset
    C++
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
바닷속벨루가
[C++] 연산자 오버로딩 복습 문제 (클래스부터 생성자, 오버로딩까지 구현해보자)
상단으로

티스토리툴바