1
2
3
4
5
6
7
8
9
10
11
| //============
//실습 과제
#include <iostream>
using namespace std;
int main()
{
cout << "hello world!\n";
return 0;
}
|
1
2
3
4
5
6
7
8
| 실습 1
#include <iostream>
int main()
{
std::cput << "hello world << std::endl;
return 0;
}
|
1
2
3
4
5
6
7
8
9
10
| 실습 2
#include <iostream>
using std::cout;
using std::endl;
int manin()
{
cout << "hello world"" << endl;
return 0;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| //============
//실습 3
#include <iostream>
namespace A
{
void y(void)
{
std::cout << "A 모듈의 Y함수" << std::endl;
}
}
namespace B
{
void y(void)
{
std::cout << "B 모듈의 Y함수" << std::endl;
}
}
//각각 A,B라는 이름 공간을 정의한다.이름 공간내의 Y라는 같은 이름의 함수를 정의한다. 함수명이 같아도
함수가 속한 이름 공간이 다름으로 이름 충돌이 생기지 않는다.
int foo(int x)
{
return x;
}
// FOO 라는 전역함수를 정의한다. foo 같이 특정 이름 공간 내에 정의하지 않은 변수명, 함수명은 모두 전역 공간에 존재한다.
전역 변수명, 함수명 등을 다른 이름 곤간의 이름과 구분하려면 아래처럼 함수명 왼쪽에 이름 공간을 지정하지 않고 범위 지정 연산자만 사용하거나 다른 이름 공간의 이름과 구분이 필요하지 않으면 범위 지정 없이 사용해도 된다.
int main()
{
int result = ::foo(8); // int result = foo(8)
std::cout << result << std::endl;
A::y();
B::y();
return 0;
}
|
1
2
3
4
5
6
7
8
9
10
| namespace NameSpace1
{
namespace NameSpace2
{
namespace NameSpace3
{
//some code
}
}
}
|
범위 지정 연산자 :: 를 연속으로 사용해서 위 코드를 다음 처럼 간결하게 나타낼 수도 있음.
1
2
3
4
| namespace NameSpace1::NameSpace2::NameSpace3
{
//some code
}
|