![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Листинг 6.4. Использование конструкторов и деструкторов.
1: // Пример объявления конструктора и 2: // деструктора в классе Cat 3: 4: #include < iostream.h> // для объекта cout 5: 6: class Cat // начало объявления класса 7: { 8: public: // начало открытого раздела 9: Cat(int initialAge); // конструктор 10: ~Cat(); //деструктор 11: int GetAge(); // метод доступа 12: void SetAge(int age); // метод доступа 13: void Meow(); 14: private: // начало закрытого раздела 15: int itsAge; // переменная-член 16: }; 17: 18: // конструктор класса Cat 19: Cat:: Cat(int initialAge) 20: { 21: itsAge = initialAge; 22: } 23: 24: Cat:: ~Cat() // деструктор, не выполняющий действий 25: { 26: } 27: 28: // GetAge, открытая функция обеспечения доступа, 29: // возвращает значение переменной-члена itsAge 30: int Cat:: GetAge() 31: { 32: return itsAge; 33: } 34: 35: // Определение SetAge, открытой 36: // функции обеспечения доступа 37: 38: voidCat:: SetAge(int age) 39: { 40: // устанавливаем переменную-член itsAge равной 41: // значению, переданному параметром age 42: itsAge = age; 43: } 44: 45: // Определение метода Meow 46: // возвращает void 47: // параметров нет 48: // используется для вывода на экран текста " Meow" 49: void Cat:: Meow() 50: { 51: cout < < " Meow.\n"; 52: } 53: 54: // Создаем виртуальную кошку, устанавливаем ее возраст, разрешаем 55: // ей мяукнуть, сообщаем ее возраст, затем снова " мяукаем" и изменяем возраст кошки. 56: int main() 57: { 58: Cat Frisky(5); 59: Frisky.Meow(); 60: cout < < " Frisky is а cat who is "; 61: cout < < Frisky.QetAge() < < " years old.\n"; 62: Frisky.Meow(); 63: Frisky.SetAge(7); 64; cout < < " Now Frisky is "; 65: cout < < Frisky. GeMje() < < " years old.\n"; 66: return 0; 67: }
Результат: Meow. Frisky is a cat who is 5 years old. Meow. Now Frisky is 7 years old.
Анализ: Листинг 6.4 подобен листингу б.З за исключением того, что в строке 9 добавляется конструктор, который принимает в качестве параметра целочисленное значение. В строке 10 объявляется деструктор, который не принимает никаких параметров. Помните, что деструкторы никогда не принимают параметров; кроме того, ни конструкторы, ни деструкторы не возвращают никаких значений — даже значения типа void. В строках 19—22 определяется выполнение конструктора, аналогичное выполнению функции доступа SetAge(), которая также не возвращает никакого значения. В строках 24—26 определяется деструктор ~Cat(). Эта функция не выполняет никаких действий, но коль вы объявляете ее в классе, нужно обязательно включить и ее определение. В строке 58 содержится определение объекта класса Cat с именем Frisky. В конструктор объекта Frisky передается значение 5. В данном случае нет никакой необходимости вызывать функцию-член SetAge(), поскольку объект Frisky создавался с использованием значения 5, присвоенного переменной-члену itsAge, как показано в строке 61. В строке 63 переменной itsAge объекта Frisky присваивается значение 7, на этот раз с помощью функции SetAge(). Новое значение выводится на экран в строке 65.
Рекомендуется: Используйте конструкторы для инициализации объектов.
He рекомендуется: Не пытайтесь с помощью конструктора или деструктора возвращать какое бы то ни было значение. Не передавайте деструкторам параметры.
|