본문 바로가기

C++3

[C++] 이름공간(네임스페이스) 말그대로 이름을 붙여놓은 공간 두개의 함수를 서로 구분할 수 없는 경우, 즉 오버로딩이 불가능한 경우에 이름공간을 만들어 서로 다른 이름공간에 함수를 정의하면 두 함수를 구분할 수 있게된다. namespace NSone{ void func(); } namespace NStwo{ void func(); } 이처럼 이름공간으로 구분된 함수를 사용하기 위해 '범위지정 연산자' ::을 사용한다. #include namespace NSone{ void func(){...} } namespace NStwo{ void func(){...} } int main(){ NSone::func(); NStwo::func(); } 선언만 이름공간에서 하고 정의를 따로하는 것도 가능하다. namespace NSone{ void .. 2022. 9. 25.
[C++] 함수 오버로딩과 매개변수의 디폴트 값 Ⅰ. 함수 오버로딩 C언어에서는 다음과 같이 두개의 함수의 이름이 다른 것을 허용하지 않았다. 예를 들어 int func(int a); int func(int a, int b); 이런 형식으로 이름이 같은 함수 두개를 구분하지 못해 함수의 이름을 항상 다르게 해야했다. 하지만 우리가 보기엔 이 두 함수를 매개변수를 보고 충분히 구분할 수 있을 것 같아 보인다. 따라서 C++에서는 이렇게 같은 이름의 함수라도 매개변수를 통해 구분할 수 있다면 함수를 정의할 수 있다. 이렇게 C언어와 C++에서의 규칙이 다른 이유는 함수를 찾는 방법이 서로 다르기 때문이다. C언어의 경우 함수를 찾을 때 함수의 이름만을 이용해 찾게 된다. 즉, 위 코드에서는 func이라는 이름만 보고 구분이 불가능하다고 판단한 것이다. C.. 2022. 7. 13.
[C++] C++의 입출력 방식 std::cout, std::cin C언어를 공부할 때의 입출력 방식은 printf, scanf를 이용했을 것이다. 하지만 C++에서는 더이상 이 printf와 scanf를 이용해 입출력을 하지 않는다. 대신 std::cout, std::cin을 이용해 입출력을 처리하게된다. Ⅰ. #include 기존에 C언어에서는 입출력을 위한 헤더파일로 를 사용했다. 하지만 C++에서는 이라는 헤더파일을 사용한다. #include int main(){ } 이렇게 헤더파일을 선언해주면 입출력을 할 준비가 된 것이다. 여기서 약간의 상식으로 에는 와 달리 확장자인 .h가 빠져있는것을 볼 수 있다. 사실 과거에는 라는 헤더파일을 선언하였으나 새로운 C++표준의 도입이 되며 많은 변화가 생겼고, 이 때문에 과거의 표준 라이브러리와 새로운 표준 라이브러리를 구.. 2022. 7. 13.