namespace

  • 각종 요소들(변수, 함수, 클래스 등)을 한 범주로 묶어주기 위한 문법
  • 변수 또는 함수 이름의 중복을 방지하고자 등장
  • ::(범위 지정 연산자)
#include <iostream>

namespace TEST
{
    int g_nData = 100;
    
    void TestFunc(void)
    {
    	std::cout << "TEST::TestFuct()" << std::endl;
    }
}

int main(void) {
    TEST::TestFunc();
    std::cout << TEST::g_nData << std::endl;
    
    return 0;
}

using

  • std 네임스페이스를 using 예약어로 선언하여 생략 가능
#include <iostream>

using spacename std;

int main(void) {
	cout << "hi" << endl;

	return 1;
}

namespace 중첩

namespace Test {
    int g_nData = 100;
    namespace DEV {
        int g_nData = 200;
    }
}

int main() {
    std::cout << g_nData << std::endl; // error
    std::cout << Test::g_nData << std::endl; // 100
    std::cout << Test::DEV::g_nData << std::endl; // 200
}

namespace 다중 정의

#include <iostream>

int Func(void)
{
    return 0;
}

namespace TEST
{
    int Func(void)
    {
        return 0;
    }
}

int main(void)
{
    Func();    // 묵시적 전역
    ::Func();  // 명시적 전역
    TEST::Func();
   	
    return 0;
}
#include <iostream>

int Func(void)
{
    return 0;
}

namespace TEST
{
    int Func(void)
    {
        return 0;
    }
}

using namespace TEST;

int main(void)
{
    Func();    // error(ambiguous)
   	
    return 0;
}

'💻 Computer Science > C & C++' 카테고리의 다른 글

[C++] 연산자 다중 정의  (0) 2024.04.15
[C++] 생성자와 소멸자  (1) 2024.02.05
[C++] 함수  (1) 2024.02.05
[C] Makefile & CMake  (0) 2024.01.23
[C] 전처리기  (0) 2024.01.12