Languages/C++(15)
-
[C++] C++ 컴파일러에서 함수를 오버로딩(Overloading)하는 과정
*을 보며 공부하여 정리한 글입니다. 1. 함수 오버로딩(Overloading)이란? 동일한 이름의 함수를 매개변수 타입, 매개변수의 개수에 따라 구분하여 여러 개 생성 가능하게 하는 것을 말합니다. 비슷한 기능인데 함수 이름이 각각 달라, 개별적으로 기억할 수고가 없어져서 편리합니다. 함수의 리턴 타입으로도 구분이 가능하나, 리턴 타입만 다르고 매개변수까지 똑같은 함수를 만드는 것은 불가능 #include // 함수 오버로딩 int Add(int x, double y) { return x + y; } int Add(int x, int y) { return x + y; } double Add(double x, double y) { return x + y; } // int Add(double x, doub..
2022.02.08 -
[C++] 참조자(Reference)
*을 보며 공부하여 정리한 글입니다. 1. 참조자(Reference)란? C 언어에서는 함수에 인자 전달 시, 원본을 바꾸는 방법으로는 Call by address밖에 없었다. 하지만, C++에서는 Call by address 외에도 다른 변수나 상수를 가리킬 수 있는 참조자(Reference) 방식또한 지원한다. 포인터와 달리 &와 * 연산자 사용이 줄기 때문에 코드를 훨씬 간결하게 나타낼 수 있다. scanf()와 달리 cin이 &를 사용하여 주소값을 줄 필요가 없는 것도 cin 내부적으로 참조를 받기 때문이다. int x = 5; int& referenceX = x; // 참조자 선언 referenceX = 10; std::cout
2022.02.08 -
[C++] 이름공간(namespace) 사용 시 주의사항
이름 공간 전체 사용 선언은 권장하지 않는다. C++ 프로그래밍을 할 때, 범위지정 연산자를 붙이기 귀찮아서 다음과 같이 이름 공간 전체를 사용하겠다고 선언한 적이 있다. using namespace std; // std 이름 공간 전체 사용 선언 하지만 이런 방법은 권장되지 않는다고 한다. std 이름 공간 내부에 이름이 겹치는 함수를 만들게 된다면 오류가 발생하기 때문이다. C++ 표준 라이브러리는 매우 거대해서 수많은 함수들이 존재한다. 그러니, 자칫 잘못해서 위와 같은 오류가 발생한다면 해결하는데 매우 힘이 들 것이라고 한다. 또한, C++ 버전이 바뀔 때마다 기존 이름 공간에서 추가되는 함수들이 있을 수 있으므로 기존에 잘 작동하던 코드가 이름 충돌로 인해 동작하지 않을 수도 있다고 한다. 따라..
2022.02.07