Реализовать класс Rectangle c++

344
10 апреля 2017, 07:26

Помогите пожалуйста с реализацией класс Rectangle. Нужно создать два приватных поля(значения целочисленные для сторон прямоугольника), методы для установки значений сторон и метод int square(), вычисляющий площадь прямоугольника. В функции main объявите несколько объектов этого класса.

Проблема в том, я не понимаю, как с помощью методов установить значения сторон(повторюсь, значения сторон - это приватные поля класса), ну а дальше, используя эти значения, найти площадь фигуры.

Answer 1
#include <iostream>
class Rectangle
{
    int length;
    int height;
public:
    /* Конструктор по умолчанию, инициализирует 
     * поля length и height значениями 0
     */
    Rectangle() 
        :length(0), height(0) 
    {}
    /* Конструктор с параметрами, инициализирует
     * поля length и height значениями
     * _length и _height, переданными в качестве
     * параметров, соответственно
     */
    Rectangle(int _length, int _height)
        :length(_length), height(_height)
    {}
    /* Функция установки значения поля length
     * значением _length, переданным
     * в качестве параметра
     */
    void setLength(int _length) { length = _length; }
    /* Функция установки значения поля height
     * значением _height, переданным
     * в качестве параметра
     */
    void setHeight(int _height) { height = _height; }
    /* Функции получения значений полей, 
     * возвращающие значение length или height
     * соответственно
     */
    int getLength() { return length; }
    int getHeigth() { return height; }
    /* Функция, рассчитывающая площадь фигуры.
     * Возвращает значение, полученное умножением
     * значений полей length и height друг на друга
     */
    int sqare() { return length * height; }
};
int main(int argc, char *argv[])
{
    Rectangle r(); // Вызывается конструктор по умолчанию.
    std::cout << r.getLength(); << " " << r.getHeigth() << std::endl; // "0 0"
    r.setLength(2); // Устанавлием длину, равную 2
    r.setHeight(3); // Устанавливаем высоту, равную
    std::cout << r.getLength(); << " " << r.getHeigth() << std::endl; // "2 3"
    std::cout << r.sqare() << std::endl; // Возвращает площадь: "6"
    Rectangle r1(5, 4); // Вызывается конструктор с параметрами
    std::cout << r1.getLength(); << " " << r1.getHeigth() << std::endl; // "5 4"
    std::cout << r1.sqare() << std::endl; // Возвращает площадь: "20"
}

В описании любого конструктора, например

Rectangle()     
    :length(0), height(0)   
{}

строка :length(0), height(0) является списком инициализации.
Такая запись эквивалентна следующей

Rectangle()  
{  
    length = 0;
    height = 0;  
}  

P.S. Могут быть небольшие помарки, т.к. код не компилировал

READ ALSO
Бинарный поиск с счётчиком

Бинарный поиск с счётчиком

Дают число n и нужно вывести сколько таких чисел в массиве, используя бинарный поиск

277
Передача по ссылке и nullptr

Передача по ссылке и nullptr

Пишу функцию на с++ типа:

274
С++ Регулярные выражения. Рекурсия?

С++ Регулярные выражения. Рекурсия?

Здравствуйте, имею задачу получить список содержимого между пар (

366
Расширение QTableView по контенту

Расширение QTableView по контенту

Есть QTableView, нужно чтобы ее размеры подгонялись по размеру содержимогоНо не флаг Stretch в хедерах

281