Page 20 -
P. 20

...
                 using std::cout;
                 using std::endl;
                 using std::chrono::system_clock;
                 ...
                 cout << "Hello world:" << endl; // 비공식 이름
                 auto timeNow= now();            // 비공식 이름

               using 선언을 하면 다음과 같은 현상이 발생한다.


                 ●    한 스코프에 같은 이름을 선언하면 모호한 룩업(lookup)과 이에 따른 컴파일 에러가 발생
                    한다.

                 ●   상위 스코프에 같은 이름이 선언돼 있으면 using 선언에 의해 가려진다.


               using 디렉티브

               using 디렉티브를 이용하면 네임스페이스 이름을 짧게 사용할 수 있다.

                 #include <iostream>
                 #include <chrono>
                 ...
                 using namespace std;
                 ...
                 cout << "Hello world:" << endl;            // 비공식 이름
                 auto timeNow= chrono::system_clock::now(); // 부분 공식 이름


               using 디렉티브는 스코프에 이름을 새로 추가하지 않고 그 이름에 접근만 할 수 있게 만든다. 따
               라서 다음과 같은 현상이 발생한다.


                 ●   한 스코프에 같은 이름을 선언하면 모호한 룩업과 이에 따른 컴파일 에러가 발생한다.
                 ●   상위 스코프에 같은 이름이 선언돼 있으면 using 선언에 의해 가려진다.
                 ●    다른 네임스페이스에 동일한 이름이 있거나 네임스페이스에 있는 이름이 글로벌 스코프에
                    있는 이름을 가리면, 모호한 룩업과 이에 따른 컴파일 에러가 발생한다.













         36





     c++_06.indd   36                                                                        2021-11-19   오전 9:25:43
   15   16   17   18   19   20   21   22   23   24   25