[C++] using namespace

2023. 2. 10. 01:25Algorithm/with C++

1. using namespace?

 

#include <bits/stdc++.h>
using namespace std;
string a;
int main(){
    cin >> a;
    cout << a << "\n";
    return 0;
}
  • using namespace std;
    : std라는 namespace를 전역으로 선언한다. stdcincout을 사용하기 위해서 필요하다.
  • cin >> a; : a에 주어진 값을 대입한다.
  • cout << a << "\n"; : a에 값을 출력한다.

 


가. namespace란

 

우리가 프로그래밍을 하다 보면 다양한 라이브러리를 사용하게 된다.

 

이때 서로 다른 라이브러리의 서로 같은 이름의 함수, 변수 … 등을 사용하게 되는 경우가 있다.

 

#include <iostream>
using namespace std;

void A() {
    cout << "나 A에유" << endl;
}

void A() {
    cout << "내도 A라고!" << endl;
}

int main(void)
{
    A(); // ??????? 어느 A ???
    return 0;
}

 

이때 이들을 구분하기 위해서 출신과 성분(?)을 밝히는 것이다.

 

#include <iostream>
using namespace std;

namespace BO {
    void A() {
        cout << "난 BOA에요" << endl;
    }
}

namespace NO {
    void A() {
        cout << "난 NOA에요" << endl;
    }
}


int main(void)
{
    // 이젠 구별이 가능하다!
    BO::A();
    NO::A();
    return 0;
}

물론 사용할 때마다 매번 밝힐 수는 없으니 전역으로 혹은 지역으로 “여기서부터는 따로 말하지 않아도 어디 어디서 온 누구로 알아먹어라”라고 지정하는데 using namespace가 그 뜻이다.

 

using namespace BO;
A();

물론 전체 namespace가 아닌 특정한 부분만 사용할 수 있다.

 

namespace BO {
    void A() {
        cout << "난 BOA에요" << endl;
    }
    void NOBONO() {
        cout << "난 보노보노에요" << endl;
    }
}
int main(void){
    using BO::A();
    A(); // 성공!
    NOBONO(); // 실패!
    return 0;
}

주의할 점

  • using namespace도 선언되는 시점과 범위를 고려해야 한다는 것이다.
  • 변수처럼 전역이냐 지역이냐에 따라서 유효 범위가 다르다.

 

#include <iostream>
using namespace std;

namespace BO {
    void A() {
        cout << "난 BOA에요" << endl;
    }
}

namespace NO {
    void A() {
        cout << "난 NOA에요" << endl;
    }
}

void Local(){
    using namespace BO; // 지역
    A(); // 가능!
}

int main(void)
{
    Local(); // SUCESS !!
    A(); // ERROR!!!    
    return 0;
}

namespace에 대한 다양한 예제는 찾아보면 많다.

 

(절대 따로 정리하기 귀찮아서가 아니다. 진짜 아니다.)

 

참고 : https://blockdmask.tistory.com/474

 

[C++] namespace 네임스페이스 정리 및 예제

안녕하세요. BlockDMask입니다. 오늘은 C++의 namespace 이름 공간에 대해서 알아보려고 합니다. C언어에서는 없던 새로운 개념인데요, 한번 천천히 자세하게 알아보겠습니다. 1. namespace 란? 2. namespace의

blockdmask.tistory.com

 


'Algorithm > with C++' 카테고리의 다른 글

[C++] 메모리 할당  (0) 2023.07.07
[C++] 배열과 포인터  (0) 2023.07.01
[C++] pair와 tuple  (0) 2023.07.01
[C++] string  (0) 2023.03.20
[C++] 입력과 출력  (0) 2023.02.10