Thread overview
override ne işe yarar ?
Sep 11, 2009
esatarslan52
Sep 11, 2009
erdem
Sep 11, 2009
esatarslan52
Sep 11, 2009
esatarslan52
Sep 11, 2009
esatarslan52
September 09, 2009

Override ile başka bir yerde daha karşılaşmıştım. Orada ezme gibi bir şey diyordu ama orada da tam olarak anlayamamıştım.

Kısaca override nedir nasıl kullanılır ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 10, 2009

Baştan yanlış okuduğum için "overload"un örneğini yazmışım. Boşa gitmesin: "overload", "aşırı yüklemek" anlamındadır. Bir fonksiyon isminin, farklı parametre türlerine göre farklı tanımlanmasını tarif eder. Şu programda int ve double için farklı olarak tanımlanmış iki tane foo fonksiyonu var:

import std.stdio;

void main()
{
   foo(42);
   foo(1.2);
}

void foo(int i)
{
   writeln("Ben int'leri yarıya bölerim: ", i / 2);
}

void foo(double d)
{
   writeln("Ben double'ları üçle çarparım: ", d * 3);
}

Şimdi override...

"override"ı karşılıkları arasındaki "hükümsüz kılmak" iyi açıklıyor: bir alt sınıfın, üst sınıf fonksiyonunu hükümsüz kılması, ve kendi tanımladığını kullandırtmasıdır:

import std.stdio;

class İşçi
{
   // Genel tanımı
   void çalış()
   {
       writeln("çalışıyorum");
   }
}

class Çimentoİşçisi: İşçi
{
   // Çimento işçisi için özel tanımı; üst sınıftakini
   // hükümsüz kılar
   override void çalış()
   {
       writeln("çimento döküyorum");
   }
}

void main()
{
   auto genelİşci = new İşçi;
   auto çimentoİşçisi = new Çimentoİşçisi;

   genelİşci.çalış();
   çimentoİşçisi.çalış();
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 11, 2009

Override kullanmadan da bende sorunsuz çalıştı. Sitesinde (http://www.digitalmars.com/d/2.0/hijack.html) incelediğimde hata verir falan diyordu override kullanmazsak.

Birde bunu mantık olarak c++ daki virtual fonksiyonlara benzetebilirmiyiz ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 11, 2009

Alıntı (acehreli):

>

esatarslan52, hangi sürümü kullanıyorsun? dmd 2.032 'override' kullanılmazsa hata verdi.

Ali

2.028 deyim hala :blush: . 2.032 yi yüklüyorum hemen.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 11, 2009

Sorun dmd nin sürümünden değilmiş Code::Blockstan kaynaklanıyor :huh:

Konsoldan kendim derlediğimde vermesi gereken hatayı verdi.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 11, 2009

Alıntı (esatarslan52):

>

Birde bunu mantık olarak c++ daki virtual fonksiyonlara benzetebilirmiyiz ?

Evet aynısı türetilen sınıf taban sınıfın üzerine yazıyor..

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 11, 2009

'Çözüm'
Settings->Compiler and Debugger -> Compiler settings->Compiler Flag bölümünden "enable warnigs -w" yi işaretli hale getiriyoruz.

http://img143.imageshack.us/img143/7954/adszjo.jpg (http://img143.imageshack.us/i/adszjo.jpg/)

Bunu işaretlemeden de hata mesajları alıyordum neden şimdi böyle bişey yaptı anlamadım :-/ .

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 11, 2009

esatarslan52, hangi sürümü kullanıyorsun? dmd 2.032 'override' kullanılmazsa hata verdi.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]