C, C++

C++) Namespace

2DC 2024. 1. 20. 20:07

Namespace

C++가 지원하는 각종 요소들(변수, 함수, 클래스 및 각종 선언 등)을 한 범주로 묶어주기 위한 문법으로 중첩이 가능하다.

선언할때는 식별자 이름 앞에 ::을 붙여서 표기한다.

사실상 C++의 모든 변수나 함수는 C++ 문법 상 namespace에 속한다고 할 수 있는데, 예시로 모든 전역변수나 함수는 global namespace에 해당한다.

 

#include <iostream>

using namespace std; // 디폴트 네임스페이스가 std가 된다.

int nData = 999; // global namespace에 속하는 전역변수

namespace Test // Test namespace 선언
{
	int nData = 100; // Test::nData

	void testFunc() // Test::testFunc()
	{
		cout << "Test::testFunc()" << endl;
	}
	namespace NestedTest { // Test::NestedTest
		string nestedNamespaceString = "중첩된 네임스페이스 테스트";
	}
}

int main()
{
	cout << "namespace using" << endl; // namespace global
	Test::testFunc(); // namespace Test


	cout << ::nData << endl; // namespace global
	cout << Test::nData << endl; // namespace Test
	cout << Test::NestedTest::nestedNamespaceString << endl; // namespace Test::NestedTest
}