블로그 이미지
송시혁

calendar

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

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive

2013. 11. 1. 11:07 c++


scope operator '::' 범위지정.

예를들어 코드에서 전역변수 a=100;이라고 지정하나, 중괄호안에 똑같은 이름의 변수의 50을 넣으면

50이 출력된다.

그때 100을 출력하고 싶으면 ::을 a앞에 붙여서 사용한다.


#include <stdio.h>

int a=100;전역변수


int main()

{

int a=50;중괄호내부에서의 선언.


printf("%d\n", a); -50이 출력

printf("%d\n", ::a); - 100이 출력.


return 0;

}


#include <iostream>
using namespace std;

namespace SAM_1
{
  int a=100;
}

namespace SAM_2
{
  int b=200;
}

int main()
{
  using namespace SAM_1;// using을 붙여서 아래 코드에 std::를 붙일 필요가 없다.
  using namespace SAM_2;
  
  cout << "SAM_1의 a: " << a << endl;
  cout << "SMA_2의 b: " << b << endl;

  return 0;
}

위 소스는 namespace에 관한 또 다른 예제.


main()함수 위에 namespace SAM_1, SMA_2라고 각각 만든 다음 아래 MAIN()함수로 코드를 작성하면 

각가 a=100, b = 200이 출력이 된다.


그러나, namesapce SAM_2에 변수 b를 a로 바꾼다면 어떻게 될까?


그러면 에러 혹은 warning을 컴파일러가 띄우게 된다.


namespace는 변수를 중복해서 사용할 수 없다. 지정된 멤버가 sam_1의 것인지, sam_2의 멤버인지 모호하기 때문이다.




















'c++' 카테고리의 다른 글

11월 4일 함수와 레퍼런스(정리 중)  (0) 2013.11.04
11월 4일 동적할당  (0) 2013.11.04
11월 1일 레퍼런스 변수  (0) 2013.11.03
11월 1일 문자열, 문자배열 c++에서 주의점  (0) 2013.11.03
10월 31일 C++ cout, cin  (0) 2013.10.31
posted by 송시혁