본문 바로가기

분류 전체보기40

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.
1일차 - Template meta programming 정의 Compile-time 재귀(recursion)를 사용해서 임의의 연산을 수행하는 기술 재귀의 종료를 위해 템플릿 전문화 기술을 사용 ex) C++11의 std::chrono, Intel TBB, ... // primary template template struct Factorial { enum { kValue = N*Factorial::kValue }; }; // 재귀의 종료를 위해서 전문화한다. template struct Factorial { enum { kValue = 1 }; }; int main(int argc, char* argv[]) { cout 2015. 6. 18.