C++ 이름공간 정리

wsung·2026년 1월 12일

모두의 코드

  • 씹어먹는 C++
#include <iostream>
  • iostream : C++에서 표준 입출력에 필요한 것들을 포함하고 있음
  • ex) std:out, std::endl (유사 C: stdio.h)

std:out : 무언가 출력시켜줌
std:endl : 개행기능

이름공간 (namespace)

cout앞에 std란?

  • C++ 표준 라이브러리의 모든 함수, 객체 등이 정의된 이름공간(namespace)

이름공간이란?

  • 정의된 객체의 소속을 지정
  • 코드의 크기가 늘어나고, 다른사람들이 쓴 코드를 가져다 쓰면서 중복된 이름을 가진 함수들이 많아져 이름공간이 필요해짐

ex)
header1.h

// header1.h 의 내용
namespace header1 {
int foo();
void bar();
}

header2.h

// header2.h 의 내용
namespace header2 {
int foo();
void bar();
}

============================================

#include "header1.h"

namespace header1 {
int func() {
	foo(); // 알아서 header1::foo() 가 실행됨
    header2::foo() // header2::foo() 실행
}

또는

#include "header1.h"
#include "header2.h"


int func() {
	header1::foo();  // namespace가 없으니 따로 명시
    header2::foo();  // namespace가 없으니 따로 명시
}

하지만 반복적으로 header1::foo()만 쓴다면?? : using 사용

#include "header1.h"
#include "header2.h"

using header1::foo;
int main() {
  foo();  // header1 에 있는 함수를 호출
}
#include "header1.h"
#include "header2.h"

using namespace header1;
int main() {
  foo();  // header1 에 있는 함수를 호출
  bar();  // header1 에 있는 함수를 호출
}
#include <iostream>
using namespace std;

int main() {
  cout << "Hello, World!!" << endl;
  return 0;
}
profile
0부터 시작하는 백엔드

0개의 댓글