주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 함수 템플릿 '함수 템플릿'은 다음과 같은 특징을 가지고 있습니다. 함수 템플릿은 함수를 만들어 낸다. 함수의 기능은 결정되어 있지만, 자료형은 결정되어 있지 않아서 결정해야 한다. 모형자가 모형을 만드는 도구가 되는 것처럼 함수 템플릿은 함수를 만드는 도구가 됩니다. 하지만 함수 템플릿이 만들어 내는 함수의 자료형이 결정되어 있지 않습니다. 우리는 이 함수 템플릿을 이용해서 다양한 자료형의 함수를 만들어 낼 수 있습니다. 다음의 예를 통해서 함수 템플릿을 구체적으로 이해해 보겠습니다. int Add(int num1, int num..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 이번 절에서는 C언어에서 사용하는 문자열과 C++에서 제공하는 std::string 클래스의 장단점을 알아보고, char 타입의 배열이나 포인터를 사용하는 것에 대해 비교 설명하고자 합니다. C언어에서는 문자열을 표기할 때 다음과 같이 char 타입을 사용합니다. #pragma warning(disable: 4996) #include #include #include int main() { const char* cc = "문자열을 입력합니다. this is a string"; char cb[17]; char* str; memcpy(c..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. new와 delete도 연산자이기 때문에 오버 로딩이 가능합니다. 그래서 이 두 연산자의 오버 로딩에 대해서 예를 보이겠습니다. 또한 포인터 연산자를 오버 로딩하면서 개념적으로 어렵다고 이야기하는 '스마트 포인터'와 '펑터(functor)'에 대해서도 간단히 설명하겠습니다. new 연산자 오버 로딩 new 연산자의 오버 로딩은 앞서 보였던 연산자 오버 로딩과는 조금 다릅니다. 간단한 예를 통해서 new 연산자는 어떻게 오버 로딩되는지 알아보겠습니다. 연산자를 오버 로딩할 대상 클래스는 다음과 같습니다. class Point { pr..
※ 주의 사항 ※ 이 글의 목적은 '지식의 전달'이 아닌 '학습의 기록'입니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. C++에서는 함수뿐만 아니라 연산자도 오버 로딩이 가능합니다. 그런데 연산자의 오버 로딩은 좀 생소하게 느껴질 수 있습니다. 하지만 기본 개념은 매우 단순하니 어렵지 않을 것입니다. 함수가 오버 로딩되면, 오버 로딩된 수만큼 다양한 기능을 제공하게 됩니다. 즉, 이름은 하나지만 기능은 여러 가지가 되는 셈입니다. 마찬가지로 연산자의 오버 로딩을 통해서 기존에 존재하던 연산자의 기본 기능 이외에 다른 기능을 추가할 수 있습니다. 다음 예제를 살펴보겠습니다. #include using namespace std; class..