이름공간

sz L·2023년 3월 22일
0

C++

목록 보기
4/40
post-thumbnail

namespace

이름공간은 말 그대로 특정 영역에 이름을 붙여주기 위한 문법적 요소이다.

#include <iostream>

using namespace std;

namespace BestComImp1
{
	void SimpleFunc(void);
}
namespace BestComImp1
{
	void llsuzn(void);
}
namespace ProgComImp1
{
	void SimpleFunc(void);
}
int main()
{
	BestComImp1::SimpleFunc();

	return 0;
}

void BestComImp1::SimpleFunc(void)
{
	cout << "BestCom이 정의한 함수" << endl;
	llsuzn(); //동일 이름공간
	ProgComImp1::SimpleFunc(); // 다른 이름공간
}
void BestComImp1::llsuzn(void)
{
	cout << "이수진입니다." << endl;
}
void ProgComImp1::SimpleFunc(void)
{
	cout << "ProgCom이 정의한 함수" << endl;
}


이름공간(namespace)의 중첩

#include <iostream>
using namespace std;

namespace Parent
{
	int num = 1;
	namespace SubOne
	{
		int num = 2;
	}
	namespace SubTwo
	{
		int num = 3;
	}
}

int main()
{
	cout << Parent::num << endl;
	cout << Parent::SubOne::num << endl;
	cout << Parent::SubTwo::num << endl;

	return 0;
}

Parent::num은 1을 의미
parent::SunOne::num은 2를 의미
parent::SunTwo::num은 3을 의미


using 사용

함수의 범위지정을 생략할 수 있게 함

#include <iostream>

using namespace std;

namespace Hybrid
{
	void HybFunc() {
		cout << "So Simple Function!" << endl;
		cout << "In Namespace Hybrid!" << endl;
	}
}

int main() {
	using Hybrid::HybFunc; // Hybrid 네임스페이스 안에 있는 HybFunc를 사용하겠다
	HybFunc(); // 함수 이름만으로도 사용이 가능하다

	return 0;
}

  • using Hybrid::HybFunc;
    • main함수 내에서만 효력이 있음
  • using namespace std;
    • 이름공간 std에 선언된 모든 것에 대해 이름공간 지정의 생략

이름공간의 별칭 지정

#include <iostream>
using namespace std;

namespace AAA
{
	namespace BBB
	{
		namespace CCC
		{
			int num1;
			int num2;
		}
	}
}

int main()
{
	AAA::BBB::CCC::num1 = 20;
	AAA::BBB::CCC::num2 = 30;

	namespace ABC = AAA::BBB::CCC;
	cout << ABC::num1 << endl;
	cout << ABC::num2 << endl;
	return 0;
}

AAA::BBB::CCC와 같은 이름에 별칭을 ABC라고 지정해 줌

profile
가랑비는 맞는다 하지만 폭풍은 내 것이야

0개의 댓글