본문 바로가기

스터디/C++55

[ C++ ] 함수 템플릿의 특수화(Specialization) 함수 템플릿의 특수화(Specialization)는 특정 자료형에 대해서만 다른 템플릿 함수를 생성할 수 있도록 커스텀해주는 것이다. 지난 템플릿 포스팅에 사용하였던 Adder 함수 템플릿을 기반으로 예제를 보겠다. template const char * Adder(const char * chr1, const char * chr2) { cout 2019. 11. 29.
[ C++ ] 둘 이상의 자료형(Type)에 대한 템플릿 선언 이렇게 typename ( 혹은 class )를 템플릿에 선언할 때 원하는 만큼 기입한 후에 문자( T1, T2, T3.. )를 활용하면 된다. 문자는 개발자 마음대로 편하게 사용한다. template 2019. 11. 29.
[ C++ ] 함수 템플릿(Function Template)과 템플릿 함수(Template Function) Template. 형판, 형틀 어떤 특정한 모양을 만들기 위해 만들어진 틀을 말한다. 즉, 함수 템플릿(Function Template)은 함수를 만드는 도구를 의미한다. 함수를 만드는 도구는 무엇으로 이뤄져서 만들지는 정하지는 않는다. 그래서 함수 템플릿이 만들어 내는 함수의 자료형도 결정되어 있지 않는다. 예를 보자. int Adder(int n1, int n2) { return n1 + n2; } 위의 함수의 기능은 덧셈이고, 대상 자료형(파라미터와 리턴 값)은 int형 데이터이다. 이러한 함수를 만들어 낼 수 있는 템플릿(Template)은 다음과 같다. T Adder(T n1, T n2) { return n1 + n2; } 위의 함수의 기능은 덧셈이고, 대상 자료형(파라미터와 리턴 값)은 결정되.. 2019. 11. 29.
[ C++ ] String 클래스 String 클래스 선언 및 정의해보기. 구현할 사항은 1. 문자열을 인자로 전달받는 생성자의 정의 2. 생성자, 소멸자, 복사 생성자 그리고 대입 연산자의 정의 3. 결합된 문자열로 초기화된 객체를 반환하는 +연산자의 오버 로딩 4. 문자열을 덧붙이는 += 연산자의 오버 로딩 5. 값 비교를 진행하는 == 연산자의 오버 로딩 6. 콘솔 입출력이 가능하도록 연산자의 오버 로딩 #include #include using namespace std; class String { private: int len; char * str; public: String(); String(const char * _str); String(const String& _str); ~String(); String& operator= .. 2019. 11. 28.