C++(cpp)

[cpp] namespace

Jueun Park 2021. 6. 21. 14:40

일단 첫번째 프로그램 만들어서 컴파일 해보기

#include <iostream> // standard input, output

int main()
{
    int sum;
    sum = 0;
    for (int i = 1; i <= 10; i++)
    {
        sum += i;
    }
    std::cout << sum ;

    return (0);
}
 컴파일:
 g++ -o first first_program.cpp
 ./first
 
 결과:
 55

 


header를 만들어서 namespace를 공부해봅시다.

[ 상황 가정 ]

-> 서초에는 heom, taehokim, dongslee, jlee가 있습니다.

-> 개포에는 yekim, sumoon, yukim이 있습니다.

위 내용을 기반으로 짠 헤더 first_header.h

#include <iostream>

namespace seocho {
    void    jlee()
    {
        std::cout << "모르겠어요..ㅎㅎ" << std::endl;
    }

    void    dongslee()
    {
        std::cout << "킹정.." << std::endl;
    }

    void    taehokim()
    {
        std::cout << "아니에요~" << std::endl;
    }

    void    heom()
    {
        std::cout << "아 너무 웃겨 ㅋㅋㅋㅋㅋㅋㅋ" << std::endl;
    }
}

namespace gaepo {
    void    yekim()
    {
        std::cout << "아뭐야 -3-" << std::endl;
    }
    
    void    sumoon()
    {
        std::cout << "🤘🏻👌🏻👍🏻👉🏻👐🏻🙌🏻👏🏻" << std::endl;
    }
    
    void    yukim()
    {
        std::cout << "비타민 드실래요?" << std::endl;
    }
}

namespace에 해당하는 함수를 호출하기

 

1. namespace 명시하기

`seocho` namespace에 있는 `jlee`가 무슨 말을 하고 있는지 출력해봅시다.

`gaepo` namespace에 있는 `yukim`은 무슨 말을 하고 있는지 출력해봅시다.

 

#include <iostream> // standard input, output
#include "first_header.h"

int main()
{
    //namespace
    std::cout << "서초에 있는 제이리가 하는 말:" << std::endl;
    seocho::jlee();

    std::cout << "개포에 있는 유킴이 하는 말:" << std::endl;
    gaepo::yukim();

    return (0);
}

결과창:

서초에 있는 제이리가 하는 말:
모르겠어요..ㅎㅎ
개포에 있는 유킴이 하는 말:
비타민 드실래요?

 

2. namespace를 일일이 써주기 귀찮을때(using)

using을 이용하면 namespace를 일일이 명시해주지 않고 함수이름만 써줄 수 있습니다.

다른 namespace의 함수는 namespace를 이전처럼 명시해주면 똑같이 쓸 수 있습니다.

#include <iostream> // standard input, output
#include "first_header.h"

using namespace seocho;

int main()
{
    std::cout << "seocho의 jlee가 하는 말" << std::endl;
    jlee();
    std::cout << "seocho의 taehokim이 하는 말" << std::endl;
    taehokim();
    std::cout << "seocho의 heom이 하는 말" << std::endl;
    heom();
    std::cout << "gaepo의 yukim이 하는 말" << std::endl;
    gaepo::yukim();
    return (0);
}

결과창:

seocho의 jlee가 하는 말
모르겠어요..ㅎㅎ
seocho의 taehokim이 하는 말
아니에요~
seocho의 heom이 하는 말
아 너무 웃겨 ㅋㅋㅋㅋㅋㅋㅋ
gaepo의 yukim이 하는 말
비타민 드실래요?