Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Перегрузка констуктора
Показать сообщение отдельно
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


ещё пара советов по оптимизации: исхожу из предположений
1) последовательность уточнения даты: год, месяц, день, час, минута, секунда, либо в обратном порядке. Т.е. нет смысла задавать дату днём и годом (без указания месяца).
2) обратный порядок нужен только для того, чтобы сокращённо задавать промежуток времени (например интервал 1 день 5 секунд). А его лучше задавать количеством секунд, а не датой. Поэтому обратный порядок тоже не нужен.
Код: Выделить весь код
// Таким образом нужен один конструктор:
class Date {
public:
  Date(int year=0, int month=1, int day = 1, int hour=0, int min=0, int sec=0);
  ...
private:
  _hidden_init(); // не раскрывается inline
};

// т..к. по сути мы даём возможность заполнить структуру, то лучше вынести inline
// так мы разделим присвоение параметров (как бы inline) и дальнейшую обработку _hidden_init()
inline Date::Date(...)
{
   ...
   _hidden_init();
}
Если нужно иногда использовать время отдельно от даты, то можно сделать так:
Код: Выделить весь код
// Таким образом нужен один конструктор:
class Time {
public: Time(int h, int m, int s);
};
class Date {
public: Date(int y, int m, int d);
};
class DateTime
{
public:
  DateTime(const Date&, const Time&);
  DateTime(const Date&);
  DateTime(const Time&);
};
// тогда путаницы не возникнет
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:49, 17-07-2010 | #7

Название темы: Перегрузка констуктора