728x90
반응형
네임 스페이스 : 이름이 같은 경우 이름에 모호성이 생기는 것을 방지, 하나의 공간
//네임스페이스 : 이름이 같은 경우 이름에 모호성이 생기는 것을 방지, 하나의 공간
#include <iostream>
using namespace std;
int n; //전역변수
void set()
{
::n = 10; //명시적 전역변수, n을 호출함
}
namespace doodle
{
int n;
void set()
{
doodle::n = 20; //doodle의 n을 호출
}
}
namespace google
{
int n;
void set()
{
doodle::n = 30; //doodle의 n을 호출
}
}
int main(void)
{
::set();
doodle::set();
google::set();
cout << ::n << endl; //10
cout << doodle::n << endl; //30
cout << google::n << endl; //0
}
함수 선언하는 방법 : (c언어에서 함수명만 main함수 위에 선언해주었던 것처럼)
//함수 선언하는 방법 (c언어에서 함수명만 main함수 위에 선언해줬던 것처럼)
#include <iostream>
using namespace std;
int n;
void set();
namespace doodle
{
int n;
void set();
}
namespace google
{
int n;
void set();
}
int main(void)
{
::set();
doodle::set();
google::set();
cout << ::n << endl; //10
cout << doodle::n << endl; //30
cout << google::n << endl; //0
}
void ::set()
{
n = 10;
}
void doodle::set()
{
n = 20;
}
void google::set()
{
n = 30;
}
네임 스페이스의 중첩
//네임스페이스의 중첩
#include <iostream>
using namespace std;
int n;
void set()
{
n = 10;
}
namespace doodle
{
void set()
{
n = 20;
}
namespace google
{
void set()
{
n = 30; //줄 위로 해당 함수와 네임스페이스에 n이 없으므로 전역변수인 n을 사용한다.
}
int n; //0이 출력된다.
}
int n; //0이 출력된다.
}
int main(void)
{
::set();
doodle::set();
doodle::google::set();
cout << ::n << endl;
cout << doodle::n << endl;
cout << doodle::google::n << endl;
}
n의 위치를 옮긴 경우
//n의 위치를 옮긴경우
#include <iostream>
using namespace std;
int n;
void set()
{
n = 10;
}
namespace doodle
{
void set();
namespace google
{
void set();
int n; //google안에 존재하는 n
}
int n; //doodle안에 존재하는 n
}
int main(void)
{
::set();
doodle::set();
doodle::google::set();
cout << ::n << endl;
cout << doodle::n << endl;
cout << doodle::google::n << endl; //10, 20, 30출력됨,컴파일러의 식별자검색 기능
}
void doodle::set()
{
n = 20;
}
void doodle::google::set()
{
n = 30;
}
#include <iostream>
int n;
void set()
{
n = 10;
}
namespace doodle
{
int n;
void set()
{
n = 20;
}
namespace google
{
int n;
void set()
{
n = 30;
}
}
}
int main()
{
using namespace std;
using namespace doodle;
::set();
doodle::set(); //set()함수의 이름이 같아 모호성이 생기므로 doodle생략 불가능
google::set();
cout << ::n << endl;
cout << doodle::n << endl;
cout << doodle::google::n << endl;
}
728x90
반응형