VisualCBook
Главная
Новости
Книга
Об авторе
Закачки
Ссылки

Урок 9: Конструкторы и Деструкторы


В прошлом уроке я употребил два незнакомых вам слова "конструктор" и "деструктор". Итак, чтоже это такое, и зачем оно нужно?



Конструкторы

При создание очередного экземпляра класса часто возникает необходимость начальной инициализации некоторых переменных. Для этой цели и служит конструктор. При создании экземпляра класса автоматически вызывается конструктор. Имя функции конструктора всегда совпадает с именем класса. Ниже представленн код объявления и реализации конструктора класса CMyClass.

...
CMyClass(){
    ...//исполняемы код
}
...

Бывают так же и такие ситуации, когда для правильной начальной инициализации необходима некоторая входная информация. Для этой цели служат конструкторы с параметрами. Параметров в конструкторе может быть сколько угодно. Ниже представлен пример использования конструктора с одним целочисленным параметром для инициализации переменной класса.

...
private:
int x;//переменная класса
public:
CMyClass(int z){
    x=z;//инициализация переменной "a"
}
...
void main(){
    CMyClass f(3);
    /*объявление экземпляра класса и передача входного параметра конструктору*/
}

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

...
private:
int x;//переменная класса
public:
CMyClass(){
    x=1;//инициализация переменной "a"
}
CMyClass(int z){
    x=z;//инициализация переменной "a"
}
...
void main(){
    CMyClass f;
    /*объявление экземпляра класса (выполняется конструктор без параметров)*/
    CMyClass ff(3);
    /*объявление экземпляра класса и передача входного параметра конструктору c параметром*/
}



Деструкторы

Деструкторы - функции, выполняющие деинициализацию элементов класса. Зачем это нужно? Приведу пример. Представте себе, что в классе есть несколько инициализованных указателей. Если удалить экземпляр класса просто так, то возможна утечка памяти, т.е. элементы класса в "куче" так и будут висеть в ней до конца выполнения программы. Можно, конечно, исхитрятся и каждый раз писать удаление элементов из "кучи" вручную, но это долго, неудобно, а самое главное не нужно. Достаточно лишь прописать строки удаления в деструкторе, который будет вызываться при удалении каждого экземпляра класса. Деструктор таже, как и конструктор носит имя класса, но перед ним идет знак "~". Приведу пример деструктора класса CMyClass:

...
~CMyClass(){
    ...//исполняемы код
}
...

Последнее, что надо сказать о деструкторах, это то, что в одном классе не может быть более одного деструктора. Стоит упамянуть ещё о том, что не бывает деструкторов с параметрами.



Предыдущий урок | Оглавление | Следующий урок

Копирование любых материалов сайта без разрешения автора и владельца сайта запрещено.
© 2005 сайт VisualCBook.narod.ru
© 2005 Кадров Никита


Hosted by uCoz