15.4 Конструкторы классa
В программах на С++ при объявлении переменных, массивов, указателей можно присваивать им начальные значения, т.е. осуществлять инициализацию. Например,
int m=2; char name[5] = ”MIEM”; char nmas[4]= {‘M’, ‘I’, ‘E’, ‘M’};
Можно ли аналогичным образом в С++ при объявлении объектов некоторого класса осуществлять иx инициализацию? Очевидно, что простым способом нельзя, т.к. обычно объекты очень сложны и содержат множество элементов – данных. Но такая возможность очень удобна хотя бы для части данных и поэтому она есть в С++.
Реализуется такая инициализация с помощью конструкторов.
Конструктор – это особая функция, которая является элементом класса и имеет имя, совпадающее с именем класса.
Конструктор нужен для объявления объекта с конкретными начальными параметрами, т.е. с инициализацией.
Как и обычные функции классa, т.е. методы, конструктор имеет заголовок и аргументы. Если аргументов нет, то это конструктор по умолчанию.
Например, в примере раздела 13.2 (см. //10) работает конструктор :
string a ( p ) ;
При этом вызывается функция, заголовок которой имеет вид
string ( const char *u )
После заголовка , как обычно, присутствует тело функции в { . . . }, т.е. конструктора.
Это конструктор для новой строки, в которую он копирует строку, адресуемую указателем u, т.е. строку р, указанную при вызове. Хотя конструктор не возвращает никакого значения, но слово void перед его именем не нужно.Текст конструкторов может быть любым и в классе может быть несколько конструкторов, различающихся количеством или типом аргументов
(перегруженные функции, см. раздел 16.3).
Вызов конструктора происходит автоматически при объявлении, т.е. создании объекта, например, string s ( “ строка” ) ;
Здесь следует обратить внимание на вызов конструктора с конкретными параметрами: между именем конструктора и параметрами стоит имя объекта, т.е. конструктор имеет форму оператора описания с параметрами в скобках, а не вызова функции.
В разделе 6.4 “Работа с файлами” при открытии файлов применялись
конструкторы с параметрами, например,
ofstream fr2 (“ d:\\ Papka1\\ rez.txt” ) ;
| | |
Здесь имеем класс, объект, параметр.
В разделе 9.1 “Комплексные переменные” использовались конструкторы
класса complex, например, complex z2 ( 5 ); complex i ( 0, 1 ) ;
Если в классе не написаны конструкторы, то компилятор сам создаёт
функцию – конструктор класса. Конструктор без параметров называется
конструктором по умолчанию, например, объявление complex z ;
вызовет конструктор с заголовком complex ( )
При работе с объектами для экономии памяти, восстановления экрана и других целей можно применять деструкторы. Конструктор выполняет какие-то действия при создании объекта, а деструктор - при прекращении действия объекта.
Деструктор – это разрушитель объекта. Деструктор похож на конструктор, но в его заголовке перед именем класса ставится (без пробела) знак тильды ~ , например, он имеет заголовок
~ string ( void )
Обычно в текстах простых программ деструктора нет , т.к. он может создаваться автоматически.
- 10.3 Операторы управления
- 10. 4 Оператор мультиветвления switch
- 10.6 Применение функции printf для форматирования
- 11.1 Графические программы
- 11.2 Построение символьного графика
- 11.4 Построение графика в графическом режиме
- 12.1 Передача данных для построения графика в MathCad
- 12.4 Указатели
- 12.5 Описание указателей
- 12.6 Указатели для массивов и строк
- 13.3 Оператор динамического выделения памяти new
- Void main ( ) {
- Void tab( ); };
- Void main ( ) {
- 15.1 Класс объектов, элементы класса
- 15.2 Доступ к элементам класса
- 15.3 Вызов элементов класса
- 15.4 Конструкторы классa
- 15.5 Пример класса Tkplk
- 16.1 Наследование
- 16.2 Полиморфизм
- 16.3 О перегрузке функций и операций
- 17. 1 Среда программирования и библиотека vcl
- 17.2 Консольное приложение в Builder
- При выполнении лабораторных работ в дисплейном классе используется
- 17.5 Вид экрана в builder
- 17.6 Работа с проектом в системе Builder
- 18.1 Редактор кода
- 18.4 Пример запроса, ввода, вывода для Win -программы