인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김동현님의 프로필 이미지
김동현

작성한 질문수

홍정모의 따라하며 배우는 C++

1.13 네임스페이스 (명칭 공간)

namespace가 필요한 경우가 이런 경우일까요?

작성

·

24

1

안녕하세요?

 

namespace가 필요한 이유가 결국에는 return이 다른데 같은 함수 이름을 써야하는 상황을 가능하도록 하기 위해서 존재하는 것으로 이해를 했는데요.

 

어떤 경우에 이런 일이 발생할까... 하고 고민해보니 이런 경우가 있을 것 같은데 적절한 예시가 맞을까요?

 

게임에서 A라는 직업이 있고 B라는 직업이 있는데, 캐릭터의 공격력을 불러오려고 할 때 직업마다 공격력 공식이 다른 경우가 있을 것 같네요.

 

직업이 여러개라고 하면, 함수명을 계속 바꾸기에는 어려울태니 공격력을 가져오는 함수를 GetPower로 통일해서 사용한다고 하면... namespace를 활용하면 될 것 같아서요!

 

namespace Destoryer
{
    int GetPower(int level)
    {
        return level * 60;
    }
}

namespace Bishop
{
    int GetPower(int level)
    {
        return level * 30;
    }
}

답변 2

1

안녕하세요? 질문&답변 도우미 Soobak 입니다.

 

학습 초반 단계부터 벌써 개념을 잘 확장하고 응용하여 생각하시는 점이 인상 깊네요.

namespace 를 이용해서 같은 이름의 함수들을 논리적으로 구분하여 사용하기도 하지만,
말씀해주신 예시(게임의 직업)의 경우 강의 8.1 객체지향 프로그래밍과 클래스 부터 학습하시게 되는 class 라는 더 좋은 개념이 있습니다. namespace 의 경우 주로 코드의 논리적 구조화, 관리 측면에서 많이 사용하게 됩니다.

해당 강의에서 더욱 자세히 학습하시게 되겠지만, class 를 이용하면 '직업' 이라는 개념을 추상화하여 상속과 다형성을 구현하실 수 있고, 공격력/방어력/체력 등의 '상태' 또한 가질 수 있도록 하실 수 있게 됩니다. (지금은 단어가 낯설으실 수 있지만 강의를 수강하시면서 자세히 학습하고 자연스럽게 익숙해지실 개념들입니다.)

학습 초반 단계이심에도 불구하고, 벌써 질문자님께서 관심있어하시는 내용과 잘 연결지으며 재미있게 공부하시는 것 같아 응원을 드리고 싶네요!

0

안녕하세요, 인프런 AI 인턴입니다. 김동현님.

질문해 주신 내용은 매우 적절한 namespace의 사용 사례입니다. C++에서 namespace는 이름 충돌을 방지하고, 코드의 가독성을 높이기 위해 사용됩니다. 특히, 여러 모듈이나 라이브러리를 사용할 때 같은 이름의 함수나 변수를 정의해야 하는 상황에서 매우 유용합니다.

질문에서 예시로 드신 게임 내 직업별로 공격력을 계산하는 경우처럼, 동일한 함수 이름을 필요에 따라 다양한 방식으로 정의하고 싶을 때 namespace를 활용할 수 있습니다. 이를 통해 각 직업의 특성에 맞는 계산 로직을 별도의 공간으로 분리하여 관리할 수 있게 됩니다.

관련하여 더 많은 정보를 얻고 싶으시다면, 아래의 유사한 질문에 대한 답변들을 참고하시는 것도 도움이 될 것 같습니다:

  1. 외부 cpp에 있는 네임스페이스는 어떻게 직접적으로 링킹이 가능한가요?? - 이 게시물은 네임스페이스와 외부 연결에 대한 이해를 도와줄 것입니다.
  2. using namespace std 의 위치에 대한 질문입니다. - 네임스페이스를 사용하는 별도의 방식들에 대해 소개합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김동현님의 프로필 이미지
김동현

작성한 질문수

질문하기