|
Программирование >> Дополнительные возможности наследования
8: public: 9: Конструкторы 10: Mammal():itsAge(2), itsWeight(5){ } 11: Mammal(){ } 13: Методы доступа 14: int GetAge()const { return itsAge; } 15: void SetAge(int age) { itsAge = age; } 16: int GetWeightO const { return itsWeight; } 17: void SetWeight(int weight) { itsWeight = weight; } 19: Другие методы 20: void Speak()const { cout Mammal sound!\ n ; } 21; void SleepOconst { cout shhh. Im sleeping.\ n ; } 24: protected: 25: int itsAge; 26: int itsWeight; 27: } ; 28: 29: class Dog : public Mammal 30: { 31: public: 33: Конструкторы 34: Dog():itsBreed(GOLDEN){ } 35: Dog(){ } 37: Методы доступа 38: BREED GetBreedO const { return itsBreed; } 39: void SetBreed(BREED breed) { itsBreed = breed; } 41: Другие методы 42: void WagTailO const { cout Tail wagging...\ n ; } 43: void BegForFoodO const { cout Begging for food...\ n ; } 45: private: 46: BREED itsBreed; 47: } ; 49: int mainO 50: { 51: Dog fido; 52: fido.SpeakO; 53: fido. WagTailO; 54: cout << Fido is << fido.GetAge() << years old\ n ; 55; return 0; 56; } I . ? Mammal sound! * Tail wagging,., Fido is 2 years old * В строках 6-27 объявляется класс Mammal (для краткости тела функций вставлены по месту их вызовов). В строках 29-47 из класса Mammal производится класс Dog. В результате объекту Fido этого класса доступны как функция производного класса WagTaiK), так и функции базового класса Speak() и Sleep(). Конструкторы о деструкторы Объекты класса Dog одновременно являются объектами класса Mammal. В этом суть иерархических отношений между классами. Когда в классе Dog создается объект Fido, то для этого из класса Mammal вызывается базовый конструктор, называемый первым. Затем вызывается конструктор класса Dog, который завершает создание объекта. Поскольку объект Fido не снабжен никакими параметрами, в обоих случаях вызывается конструктор, заданный по умолчанию. Объект Fido не существует до тех пор, пока полностью не будет завершено его создание с использованием обоих конструкторов класса Mammal и класса Dog. При удалении объекта Fido из памяти компьютера сначала вызывается деструктор класса Dog, а затем деструктор класса Mammal. Каждый деструктор удаляет ту часть объекта, которая была создана соответствующим конструктором производного или базового классов. Не забудьте удалить из памяти объект, если он больше не используется, как показано в листинге 11.3. Листинг 11.3. Вызов кинструктира и увструктира 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Листинг 11,3, Вызов конструктора и деструктора, #include <iostream.h> enum BREED { GOLDEN, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB > class Mammal { public: конструкторы MammalO; MammalO; Методы доступа int GetAgeO const { return itsAge; } void SetAgednt age) { itsAge = age; } int GetWeightO const { return itsWeight; } void SetWeight(int weight) { itsWeight = weight; } Другие методы void SpeakO const { cout Mammal sound!\ n ; } void SleepO const { cout shhh, Im sleeping.\ n ; } 24: protected: 25: int itsAge; 26: int itsWeight; 27: > ; 28: 29: class Dog : public Mammal 30: { 31: public: 33: Конструкторы 34: DogO; 35: -DogO; 36: 37: Методы доступа 38: BREED GetBreedO const { return itsBreed; } 39: void SetBreed(BREED breed) { itsBreed = breed; > 41: Другие методы 42: void WagTailO const { cout Tail wagging...\ n ; } 43: void BegForFoodO const { cout Begging for food...\ n ; } 45: private: 46: BREED itsBreed; 47: > ; 49: Mammal::Mammal(): 50: itsAge(l), 51: itsWeight(5) 52: { 53: cout Mammal constructor.,.\ n ; 54: } 56: Mammal: : МаттаИ ) 57: { 58: cout << Mammal destructor...\ n ; 59: > 61: Dog:: DogO: 62: itsBreed(GOLDEN) 63: { 64: cout Dog constructor..,\ n ; 65: } 67; Dog::Dog() 68: { 69: cout Dog destructor...\ n ; 70: > 71: int mainO 72: {
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |