본문 바로가기

NC University37

2일차 - 템플릿 인자 템플릿 인자로 사용가능한 것들 1. 타입 2. 정수형(int, short, char...) '상수' - 정수형 '변수'나 실수 값은 사용불가 아래와 같은 간단한 클래스 템플릿 하나를 생각해보자. template class Stack { T Buff[N]; }; 위의 템플릿은 '타입'과 '정수형 상수'를 인자로 받는다. 그리고 각 템플릿 인자에 대해 디폴트 값이 설정되어 있다. 만약에 두 번째 인자의 타입을 float나 double로 썼다면 컴파일 에러가 발생한다. 이는 템플릿 인자에 정수형이 아닌 다른 타입의 상수는 사용할 수 없기 때문이다. 이제 다음의 코드를 살펴보면서 실제 사용가능한 경우와 그렇지 않은 경우를 살펴보자. int n = 10; Stack s1; Stack s2; //< (Error) .. 2015. 6. 30.
2일차 - value_type 정수형 데이터를 저장하는 vector의 첫번째 원소를 출력하는 함수 print_first_element가 있다. 이 함수는 아마도 다음과 같이 구현되어 있을 것이다. #include #include using namespace std; void print_first_element (const vector& v) { int n = v.front(); cout 2015. 6. 29.
2일차 - 멤버함수 템플릿 멤버함수 템플릿 // class template definition template class Stack { public: void Push(T a); template T foo(U a); }; // 1. 클래스 템플릿 멤버함수의 외부구현 template void Stack::Push(T a) {} // 2. 멤버함수 템플릿의 외부구현 template template T Stack::foo(U a) {} 멤버함수 템플릿의 필요성 Complex (복소수) 클래스를 작성한다고 가정해보자. 아마도 기본적으로 아래와 같은 모양이 나올 것이다. template class Complex { public: // Zero-initializer 사용 // T가 표준타입 혹은 포인터이면 0으로 초기화, 사용자 타입일 경우.. 2015. 6. 24.
1일차 - new에 대해서 우리가 사용하는 new의 정확한 동작 방식 operator new() 함수를 호출해서 메모리 할당 1이 성공했을 때 생성하고자 하는 자료형이 클래스 타입이라면 생성자 호출 메모리 주소를 해당 타입으로 캐스팅해서 리턴 아래의 코드를 살펴보자. #include using namespace std; class Point { public: Point() { cout 2015. 6. 19.