Програмна среда С


Категория на документа: Информатика


Raccoon();
Bear();
Panda();
За да се открие присъствието на виртуален базов клас, се претърсва йерархията на онаследяването по реда на декларациите на базовите класове. Например, представеното тук извличане на Panda, се претърсва по следния ред:
Endangered
Herbivore*
Raccoon*
Bear
Ako Endangered също съдържаше виртуален базов клас, редът заизвикване на конструкторите за повече базови класоове щеше да бъде както реда на търсене в йерархията. Например, виртуален базов клас, свързан с Endangered, се вика преди виртуалният базов клас ZooAnimal, свързан едновременно с Bear и Raccoon. Редът на извикване на деструкторите е обратен.
Едновременно използване на виртуални и невиртуални образци
Когато едно извличане съдържа едновременно виртуални и невиртуални образци на базов клас, създава се по един обект от базовия клас за всеки невиртуален образец и друг обект на базовия клас за всички виртуални образци. Например, ако се промени Endangered да бъде невиртуално извлечен от ZooANimal, Panda ще съдържа два образецана ZooAnimal, виртуалния образец от Bear и Raccoon и невиртуалния образец от Endangered.
Отново съществуват два или повече образци на онаследените членове от базов клас. Изискват се псевдоними, които да указват кой точно образец се има впредвид.
Резюме
По подразбиране механизмът на онаследяване дефинира дърво на йерархията на онаследяването, в което всяка поява на базов клас поражда образец на базовия клас. Виртуалните базови класове оси-гуряват начин за пренебреване на този подразбиращ се механизъм. Независимо от това колко често един виртуален базов клас се срещав йерархията на извличането, генерира се само един негов образец. Виртуалният базов клас служи като единствен, споделен образец.
В нашия пример ZooAnimal е виртуален базов клас едновременно наBear и Raccoon. Panda, извлечен от Bear и Raccoon, съдържа единствения споделен образец на ZooAnimal.



Сподели линка с приятел:





Яндекс.Метрика
Програмна среда С 9 out of 10 based on 2 ratings. 2 user reviews.