앞 절에서 살펴본 Point_ 클래스와 마찬가지로 Size_ 클래스도 템플릿으로 정의되어 있으며, 다양한 자료형에 대해 이름이 재정의되어 있습니다. 사각형 영역의 가로 및 세로 크기를 int 자료형으로 표현하려면 Size2i 클래스를 사용하고, float 자료형을 사용하려면 Size2f 클래스를 사용합니다. 특히 정수형으로 가로, 세로 크기를 표현하는 경우가 많기 때문에 Size2i는 다시 Size라는 이름으로 재정의되어 있습니다. 즉, Size 클래스는 정수형 멤버 변수 width, height를 가지고 있는 사각형 크기 표현 클래스입니다.
Size_ 클래스를 사용하는 코드 작성 방법에 대해 알아보겠습니다. 2차원 정수 좌표계에서 크기를 표현하려면 다음과 같이 코드를 작성할 수 있습니다.
Size sz1, sz2(10, 20); // sz1 = [0 x 0], sz2 = [10 x 20] sz1.width = 5; sz1.height = 10; // sz1 = [5 x 10]
이 코드에서 오른쪽 주석으로 표시된 부분은 연산에 의해 생성되는 Size_ 객체의 크기를 나타냅니다. 변수 sz1은 기본 생성자를 사용하여 생성하였으며, 이 경우 멤버 변수 sz1.width와 sz1.height는 0으로 초기화됩니다. 그러므로 기본 생성자로 생성된 변수 sz1은 0×0의 크기를 나타내고, 이는 유효하지 않은 크기 객체입니다. 변수 sz2는 생성과 동시에 10×20의 크기를 나타냅니다. 앞 코드의 두 번째 행에서는 sz1.width에 5를 대입하고, sz1.height에는 10을 대입함으로써 5×10의 크기를 나타내도록 변경했습니다.
Point_ 클래스와 마찬가지로 Size_ 클래스도 다양한 연산자에 대해 연산자 재정의가 되어 있습니다. 그러므로 다음과 같이 사칙 연산을 이용하여 크기를 조절할 수 있습니다.
// sz1 = [5 x 10], sz2 = [10 x 20] Size sz3 = sz1 + sz2; // sz3 = [15 x 30] Size sz4 = sz1 * 2; // sz4 = [10 x 20] int area1 = sz4.area(); // area1 = 200