namespace

킴스코딩클럽·2022년 12월 9일
1

CS기초 시리즈

목록 보기
61/71

이름을 만드는 것이 어려움 => 이름공간(namespace)가 등장함


#include <iostream>
#include"game.h"
//global namespace: 전역 이름 공간
namespace Modeling
{
    class Warrior
    {
    public:
        void Attack() {

        }

    };

    void Render() {

    }

    static int gMaxPlayer = 8;
}


namespace GUI
{
    void Render() {

    }
}

void WhoAmI() {
    std::cout << "1" << std::endl;
}

int main()
{
    Modeling::Warrior w;
    w.Attack();
    GUI::Render();
    ::WhoAmI();     //전역함수 사용시 이렇게도가능
   


    using namespace Game;
    Renders();  
    //Game::Renders();
    //편리하지만 같은 이름이 있을 경우모호성 오류 발생 가능
    //범위를 잘 지정해주어야 함
}

using namespace는 cpp에서만 header에서는 사용 삼가하기
의도하지않게 네임스페이스가 풀려서 겹칠 수 있음
(누군가가 header를 include하는 경우)

네임스페이스도 식별자로 작동하기 때문에 같은 이름의 class나 struct 전역함수 전역변수 등을 같이 사용할 수 없음

만약 새 네임스페이스와 비슷한 이름을 쓰려면 새로 추가될 네임스페이스를 고치기 (기존 것을 고치는 것이 더 어려움)

profile
공부 기록용

0개의 댓글