3.1.2 Size_ 클래스
영상 또는 사각형 영역의 크기를 표현할 때에는 Size_ 클래스를 사용합니다. Size_ 클래스는 사각형 영역의 가로와 세로 크기를 나타내는 width와 height 멤버 변수를 가지고 있습니다. 간략화한 Size_ 클래스 정의를 코드 3-2에 나타냈습니다.
코드 3-2 간략화한 Size_ 클래스 정의와 이름 재정의
01 template<typename _Tp> class Size_ 02 { 03 public: 04 Size_(); 05 Size_(_Tp _width, _Tp _height); 06 Size_(const Size_& sz); 07 08 Size_& operator = (const Size_& sz); 09 10 _Tp area() const; 11 bool empty() const; 12 13 _Tp width, height; 14 }; 15 16 typedef Size_<int> Size2i; 17 typedef Size_<int64> Size2l; 18 typedef Size_<float> Size2f; 19 typedef Size_<double> Size2d; 20 typedef Size2i Size;
• 4행 기본 생성자. width = 0, height = 0으로 초기화됩니다.
• 5행 (_width, _height) 크기를 인자로 받는 생성자. width = _width, height = _height로 초기화됩니다.
• 6행 복사 생성자. width = sz.width, height = sz.height로 초기화됩니다.
• 8행 대입 연산자 재정의입니다.
• 10행 Size::area() 멤버 함수는 사각형 크기에 해당하는 면적(width×height)을 반환합니다.
• 11행 Size::empty() 멤버 함수는 유효하지 않은 크기이면 true를 반환합니다.
• 13행 멤버 변수. width는 사각형 영역의 가로 크기, height는 사각형 영역의 세로 크기를 나타냅니다.
• 16~20행 다양한 자료형에 대한 Size_ 클래스 이름 재정의입니다.