Re: Дать немного коментария по коду
Добавлено: 15 май 2009, 17:32
Код и терминология не верны в корне.
Код должен быть следующим:
Коментарии должны быть следующими:
TreeRoom - это конструктор по умолчанию (default constructor) для класса ThreeRoom. В нём вызывается конструктор базового класса OneRoom для того, чтобы проинициализировать его поля. В теле конструктора TreeRoom происходит присваивание полю count_room значения 3.
Кстати, этот подход неправильный. Поле count_room должно инициализироваться посредством конструктора того класса, в котором оно расположено, а в классе-наследнике должен вызываться конструктор. Прямое последование не только криво, так как нарушает принципы инкапсуляции, но ещё и не возможно, например в том случае, если поле count_room является private.
Помимо этих заметок я бы наделал ещё кучу замечаний, но они уже касаются не класса TreeRoom. Например в классе OneRoom есть метод SetRoomCount, причём, внимание, для не проставлен идентификатор const. Если этот метод действительно меняет поля класса (а его имя это подразумевает), то такой код просто не скомпилируется.
Код должен быть следующим:
Код: Выделить всё
class ThreeRoom: public OneRoom
{
public:
ThreeRoom() : OneRoom() { count_room = 3; }
ThreeRoom(double sqr, int flr, double sqr_kitchen) : OneRoom(sqr, flr, sqr_kitchen) { count_room = 3; }
};
Код: Выделить всё
ThreeRoom() : OneRoom(){ count_room = 3; }
Кстати, этот подход неправильный. Поле count_room должно инициализироваться посредством конструктора того класса, в котором оно расположено, а в классе-наследнике должен вызываться конструктор. Прямое последование не только криво, так как нарушает принципы инкапсуляции, но ещё и не возможно, например в том случае, если поле count_room является private.
Помимо этих заметок я бы наделал ещё кучу замечаний, но они уже касаются не класса TreeRoom. Например в классе OneRoom есть метод SetRoomCount, причём, внимание, для не проставлен идентификатор const. Если этот метод действительно меняет поля класса (а его имя это подразумевает), то такой код просто не скомпилируется.