TopSladur.com - Кой е най-големия?
Помогни ни да направим Uroci.net по - богат! Добави урок
Категории Други уроци Adobe Photoshop Adobe Illustrator Adobe Flash Adobe Fireworks DreamWeaver CSS и HTML Corel Draw Image Ready PHP SEO CMS Microsoft Windows Microsoft Word Microsoft Excel PowerPoint Microsoft Access Microsoft Publisher Linux Visual basic JavaScript Ajax 3ds Max Maya 3D C++
C++
Sound Forge Gimp SWiSH

C++ част.8 (Обектно-ориентирано)

C++ » C++
fix3d   трудност:    видян: 6344


Глава 8: Обектно-ориентирано програмиране

Съдържание на осма глава :

8.1. Презаредими функции с аргумент клас
8.2. Виртуални функции
8.3 Виртуални базови класове


Обектно ориентираното програмиране се характеризира с онаследяване и динамично свързване. С++ поддържа онаследяването чрез извличане на класове - това беше темата на предишната глава. Динамичното свързване се осъществява чрез виртуалните функции на клас.

Йерархията на онаследяване дефинира отношения тип подтип между типовете класове. Например, Panda е тип Bear, на свой ред Bear е тип ZooAnimal. По същия начин и сортираният масив, и масив с проверка на ранга са типове IntArray. Виртуалните функции дефинират типово зависими операции в йерархията на онаследяването - например, функцията draw() на ZooAnimal или subscript оператора на класа масив. Виртуалните функции осигуряват метод за капсулиране на детайли по реализацията на йерархията на онаследяването от програмите, които ги използват. В тази глава ще разгледаме подробно виртуалните функции. Ще разгледаме също един специален случай на онаследяване на класове - този на виртуалния (или още споделен) базов клас. В началото обаче ще преразгледаме презаредимостта на име на функция с аргумент от тип клас.



8.1. Презаредими функции с аргумент клас

Често една функция се прави презаредима за да се осигури образец на съществуваща функция за работа с обекти класове. Например, ако трябва да се дефинира клас комплексно число, проектантът трябва след това да дефинира образец на библиотечната функция за извличане на квадратен корен, която оперира с обекти от класа Complex:

extern Complex& sqrt( Complex& );

Първоначалното разглеждане на презаредими функции. Това е предмет на обсъждане на тази глава.

Сега ще разгледаме точното съпоставяне на аргумент от тип клас, съпоставянето чрез стандартни преобразования и съпоставянето чрез извикване на дефиниран от потребителя оператор за преобразуване.

Точно съпоставяне

Обект от клас се съпоставя точно само с формален аргумент от неговия тип клас. Например,

ff( Bear& );
ff( Panda& );
Panda yingYang;// exact match : ff( Panda& )
ff( yinYang );

По подобен начин указател към обект от клас се съпоставя точно само с формален аргумент указател към същия тип клас. Алгоритъмът за съпоставяне на аргументи не може да прави разлика между обект и псевдоним от тип клас. Макар че следващите два образеца декларират две различни функции, реалното обръщение е двузначно и предизвиква грешка по време на компилация.

// warning : cannot be distinguished// by the argument matching algorithm ff( Panda );

ff( Panda& );// ok : ff( Panda& )
int (*pf)( Panda& ) = ff;
ff( yinYang ); // error : ambiguous
pf( yinYang ); // ok


Страници: 1 2 3 4 »

Регистрирайте се, за да добавите коментар

реклама

© Всички права запазени. 2006-2008. Created by: Site.bg
Препоръчваме: IT Новини | Кино и игри | Диплома.бг | Paparak.bg | Тунинг Портал | uchenik.com | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | AnimeS-bg.com | Фото Форум | Запознанства | Мрежа от приятели | IT Light | Spodeli.net | Фото-Култ | Dalavera.net | IDG.BG | Teenproblem.net | mucunki.com | Блог - Образование | Fresh-BG.com | Hanovete.com | Bulfleet.com | Mythlands.com | Ohoboho.com | News24 | Казанлък.Com | Atol.bg | Elmaz.com | MobileBulgaria.com | Setcom.bg