본문 바로가기
VisualStudio.C++.C#/C . C++

C++ . 네임스페이스

by i.got.it 2026. 1. 18.

 

 

 

네임스페이스 . Namespace

- 코드의 이름 충돌 방지 및  논리적인 그룹화 위해 활용. 

 

이름 충돌 방지 (가장 큰 목적)
서로 다른 라이브러리에서 같은 이름의 함수(init(), log())를 정의해도 네임스페이스가 다르면 공존 가능.

 

 

 

 

네임스페이스 기본문법 

 

namespace 이름
{

....

} // ; 없음.

 

 

예. 


#include <iostream>

namespace MyApp {
    int version = 10;
    void print() {
        std::cout << "MyApp Version: " << version << std::endl;
    }
}

int main() {
    // 1. 범위 지정 연산자(::) 직접 사용
    MyApp::print(); 

    // 2. using 지시어 사용 (블록 내 모든 요소 개방)
    using namespace MyApp;
    std::cout << version << std::endl;

    return 0;
}

 

 

네임스페이스 중첩 및 별칭


// C++17 이후 중첩은 간결하게 가능. 
namespace Company::Project::Module {
    void task() {}
}

// 별칭(Alias) - 긴 경로를 짧게 줄임
namespace CPM = Company::Project::Module;

int main() {
    CPM::task();
}

 

 

클래스 헤더 , cpp  네임스페이스 예.

 

헤더. 

namespace MyApp::Tools {

    class Calculator {
    public:
        int Add(int a, int b); // 멤버 함수 선언
    };

}

 

cpp

#include "MyClass.h"

namespace MyApp::Tools {
    // 이미 MyApp::Tools 안에 들어와 있으므로 클래스 이름만 
    int Calculator::Add(int a, int b) {
        return a + b;
    }
}

 

 

 

헤더 파일(.h)에서 using namespace 사용 금지

 

헤더 파일은 다른 파일들에 의해 #include 되는데,  만약 A.h에서 using namespace std;를 사용하면, 이 헤더를 포함하는 모든 .cpp 파일에 원치 않더라도 std 네임스페이스의 모든 이름이 강제로 노출됨. 
 
// [나쁜 예] MyHeader.h
using namespace std; // 절대 금지
void PrintName(string name); 

// [좋은 예] MyHeader.h
#include <string>
namespace MyLib {
    void PrintName(std::string name); // std::를 직접 붙임
}

 

CPP 파일에서는 using namespace 사용 자유로움. 

  • 권장 방법: .cpp 파일의 상단보다는 특정 함수 내부에서 사용하거나, 필요한 것만 선언.
// MyFile.cpp
#include "MyHeader.h"

// 방법 1: 필요한 것만 개별 선언 (가장 권장)
using std::string;
using std::cout;

// 방법 2: 함수 내부에서만 사용 (영향 범위 제한)
void MyFunc() {
    using namespace std;
    cout << "Hello" << endl;
}

 

 

 


첫 등록 : 2026.01.18

최종 수정 : 

단축 주소 : https://igotit.tistory.com/6416


 

댓글



비트코인




            암호화폐/외환/나스닥/골드          
       
현물 |선물 인버스 |선물 USDT , bybit MT5               프랍 트레이딩. MT4,MT5