Виртуални функции и Виртуални класове
| Информационни технологии | 2009-12-04 | 33 сваляния |
Виртуални функции и Виртуални класове
Полиморфизъм - Виртуални Функции
-
Полиморфизмът е свойство на член-функциите и се реализира с виртуални функции.
-
Той се състои в осигуряване възможността генерирания код да се държи по различен начин в зависимост от условия, определяни по време на изпълнението на програмата.
-
Идеята на тези функции се основава на вида на свързването им (статично или ранно и съответно динамично или късно).
-
Статичното свързване на типа на обекта с извикваната член-функция става по време на компилацията и не се променя при изпълнение на програмата. Свързващият редактор замества имената на извикваните функции с конкретните им адреси.
Пример илюстриращ статично свързване
#include
class point
{ protected:
int x,y;
point(int a=0,int b=0) { x=a; y=b; }
void out() {cout<<точка:<<x<< <<y<<n; }
};
class pointcol:public point
{ short color;
public:
pointcol(int a=0,int b=0,short cl=1):point(a,b)
{ color=cl; }
void out()
{ cout<<оцветена точка:<<x<< <<y<<с цвят:<<color<,n; }
};
void main()
{ point p(3,5),*adp=&p;
pointcol pc(8,6,2),*adpc=&pc; //Резултати от изпълнение
adp->out(); //извиква се out на point точка:3 5
adpc->out();//извиква се out на pointcol оцветена точка:8 6 2
adp=adpc; //по време на изпълнението
adp->out(); //но adp е point по време точка:3 5
adpc->out();//на компилация оцветена точка:8 6 2
}
-
Динамичното свързване на типа на обекта с извикваната член-функция е по време на изпълнение на програмата. При извикването на функция се задава само името, но не и конкретния адрес на прехода. Или по време на изпълнение се дава възможността за промяна на връзките между имена и адреси. Късното свързване се определя чрез думата virtual.
Пример илюстриращ динамично свързване
#include
class point
{ protected:
int x,y;
point(int a=0,int b=0) { x=a; y=b; }
virtual void out() {cout<<точка:<<x<< <<y<<n; }
};
class pointcol:public point
Тагове от реферата: полиморфмът, полиморфъм, свойво, иртни, ункциит, реаира, ункции











