Помогите разобраться с классами

Тема в разделе "LANGS.C", создана пользователем Magnum, 17 авг 2008.

  1. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    varnie, ты прав во всём. Я слишком переусердстсвовал с minimum'ом и бритвой Окама :)
     
  2. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    частично с обнулением извне разобрался

    А как занулить все переменные сразу из конструктора?
     
  3. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Magnum
    что за переменные? как уже выше заметили, это не айс, что у тебя сотня переменных в классе. может им по смыслу не надо в классе то лежать?? как вариант, можешь хранить их в struct-уре, которую положить в класс


    upd: сглупил.
    а в классе в конструкторе вызвать memset для структуры как и ранее.
     
  4. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    varnie
    я ж пока только-только разбираюсь с классами
    в реальных проектах естественно такого не будет
    А пока
    выясняю все ньюансы

    ЗЫ: удобно блин. Как же я раньше без классов жил то ))))
     
  5. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    На практике обычно случается так, что класс содержит не только POD-типы, но обычно объекты других классов(например строки -- std::string). Кроме того, часто в классе хранятся ссылки и указатели на другие объекты, переменные-члены собственных типов.

    К тому же не всем типам рационально присваивать одно и тоже значение. Не забывай, что ты работаешь с абстракцией в терминах объекта.

    Представь такой простой случай:

    Код (Text):
    1. class A
    2. {
    3.     enum DayOfWeek { Monday = 1, Tuesday, Wednesday, Thursday, Friday };
    4. public:
    5.     A()  {};
    6.     ~A() {};
    7. private:
    8.     DayOfWeek day;
    9. };
    Ты считаешь правильно присваивать переменной day значение 0 или -1? У нас нет таких дней недели. :)

    Почитай про списки инициализации. В данном случае лучше поступить так:

    Код (Text):
    1. class A
    2. {
    3.     enum DayOfWeek { Monday = 1, Tuesday, Wednesday, Thursday, Friday };
    4. public:
    5.     A():  
    6.       ctime(time(NULL)), todo("No tasks."), day(Tuesday)
    7.     {};
    8.     ~A() {};
    9. private:
    10.     time_t ctime;
    11.     std::string todo;
    12.     DayOfWeek day;
    13. };