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