Языки С и С ++: создание, уничтожение и копирование
Определить смысл инициализации объекта класса можно, определив один или
несколько конструкторов (constructors). Конструктор — это функция-член, не
имеющая возвращаемого значения, имя которой совпадает с именем класса.
Также вам может показаться, что такая тема как
http://intlains.ru/avr---bloki-avtomaticheskogo-vvoda-rezerva
никак не связана и даже не тематична с темой этого сайта. Хотя, может быть и связана.
В любом случае все-таки зайдите на сайт intlains.ru
Тема автоматическое включение резерва авр там представлена весьма широко.
class Date { public:
Date(int yy, int mm, int dd) :y(yy), m(mm), d(dd) { }
// . . . private:
int y,m,d;
};
Date d1(2006,11,15); // OK: инициализация с помощью конструктора
Date d2; // ошибка: нет инициализации
Date d3(11,15); // ошибка: неправильная инициализация
// (требуются три инициализатора)
Обратите внимание на то, что данные-члены могут быть инициализированы с помощью списка инициализации в конструкторе. Члены класса инициализируются в порядке их определения в классе.
Конструкторы обычно используются для установления инвариантов класса и получения ресурсов.
Объекты класса создаются снизу вверх, начиная с объектов базового класса в порядке их объявления. Затем в порядке объявления создаются члены класса, после чего следует код самого конструктора. Если программист не сделает чего-нибудь очень странного, это гарантирует, что каждый объект класса будет создан до своего использования.
Если конструктор с одним аргументом не объявлен с помощью ключевого слова explicit, то он определяет неявное преобразование типа своего аргумента в свой класс.
class Date { public:
1120
ПРИЛОЖЕНИЕ A • КРАТКИЙ ОБЗОР ЯЗЫКА
Date(string);
explicit Date(long); // используется целочисленное
};
void f(Date);
Date d1 = "June 5, f("June 5, 1848");
1848"; // OK
// OK
Date d2 = 2007*12*31+6*31+5;
f(2007*12*31+6*31+5);
// ошибка: Date(long) — явный // конструктор
// ошибка: Date(long) — явный конструктор
Date d3(2007*12*31+6*31+5);
// OK
Date d4 = Date(2007*12*31+6*31+5); // OK
f(Date(2007*12*31+6*31+5));
// OK
Если базовые классы или члены производного класса не требуют явных аргументов и в классе нет других конструкторов, то автоматически генерируется конструктор по умолчанию (default constructor). Этот конструктор инициализирует каждый объект базового класса и каждый член, имеющий конструктор по умолчанию (оставляя члены, не имеющие конструкторы по умолчанию, неинициализированными). Рассмотрим пример.
struct S {
string name, address;
Этот класс S имеет неявный конструктор S(), инициализирующий члены name и address, но не x.
Опубликовал katy
May 03 2015 12:07:30 ·
0 Комментариев ·
2952 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.