Tam Sürümünü Görmek İçin : inheritance_virtual
ankakusu
30/06/2008, 13:43
Tekrardan selamlar :)
Benim inheritance konusu hakkında birkaç ufak sorum olacaktı. Acaba virtual ne demek oluyor? Bunu genellikle constructorlarda kullanıyoruz. Peki fonksiyonlarla da kullanabiliyor muyuz acaba?
quasimodo
30/06/2008, 20:23
virtual kelime anlami olarak sanal demek. C++ taki anlamida su;
virtual fonksiyon bir sinifin uye fonksiyonudur ve bu fonksiyon
turemis sinif tarafindan ezilebilir. Mesela;
class Window // Temel Sinif
{
public:
virtual void Create() // virtual fonksiyon
{
cout <<"Tmel Sinif"<<endl;
}
};
class CommandButton : public Window
{
public:
void Create()
{
cout << "Turetilmis Sinif "<< endl;
}
};
int main()
{
Window * x, * y;
x = new Window();
x->Create();
y = new CommandButton();
y->Create();
}
Create fonksiyonu hangi nesne icin cagirilmissa o nesnenin Create()
fonksiyonu cagirilir. Bu karar islemi calisma zamaninda olur.
Tabiki baska fonksiyonlarda sanal olabilir.
acehreli
30/06/2008, 23:35
ankakusu, virtual'in constructor'larla kullanildigini sanmiyorum.
quasimodo'nun soylediginden baska, bir de turetmeyle ilgisi var:
class B
{};
class C : virtual public B
{};
class D : virtual public B
{};
class E : public D
{};
Oradaki virtual sozcukleri olmasa, E'nin birbiriyle ilgisi olmayan iki tane B'si olurdu (birisi C'den, birisi D'den gelen).
C ve D B'den virtual olarak turetildiklerinde ise E'nin tek bir B'si olur (C ve D tarafindan paylasilan):
virtual yoksa:
B B
| |
C D
\ /
E
virtual turetim:
B
/ \
C D
\ /
E
Ali
quasimodo
01/07/2008, 00:10
Diamond :D
Coldplay
01/07/2008, 10:56
acehreli bu konuyu 2 cümleyle cok iyi anlatmis. Ben sahsen dün bu konuyu aciklamak icin yarim sayfa yazdim. Sonra yazdiklarimi kendim bile anlamayinca postalamaktan vazgectim.:D Hem de elimde bu elmas tarzi kalitim resimleri oldugu halde.
acehreli
04/07/2008, 02:59
Tesekkurler Coldplay... O kadar iyi anlatmis olmaliyim ki, yaptigim onemli hata kimseyi rahatsiz etmemis. :)
E tabii ki hem C'den hem D'den tureyecekti:
class E : public C, public D
{};
Ali
quasimodo
04/07/2008, 12:19
Sadece UML ye bakmıştım ben :(
Çok güzel bilgiler bunlar , polymorphism'i biraz daha anlamamı sağladı teşekkürler :)
Forum Yazılımı : vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.