SORU
7 EKİM 2008, Salı


Kullanarak "süper" C

Kodlama benim stilim aşağıdaki deyim içerir:

class Derived : public Base
{
   public :
      typedef Base super; // note that it could be hidden in
                          // protected/private section, instead

      // Etc.
} ;

Bu bana "bir Baz, örneğin, kurucular için takma ad: as . süper kullanmanıza olanak sağlar

Derived(int i, int j)
   : super(i), J(j)
{
}

Hatta geçersiz sürümü içinde temel sınıf yöntemi çağırmak:

void Derived::foo()
{
   super::foo() ;

   // ... And then, do something else
}

Hatta zincirleme (hala bunu yapan var) olabilir

class DerivedDerived : public Derived
{
   public :
      typedef Derived super; // note that it could be hidden in
                             // protected/private section, instead

      // Etc.
} ;

void DerivedDerived::bar()
{
   super::bar() ; // will call Derived::bar
   super::super::bar ; // will call Base::bar

   // ... And then, do something else
}

Her neyse, "süper Temel ayrıntılı ve/veya şablon ya. ne zaman" çok yararlı, örneğin, typedef kullanımı buluyorum

Aslında super yanı sıra C, Java uygulanan# denir ("", yanılmıyorsam) taban. Ama C bu kelime yoktur.

Yani, benim soru:

  • bu typedef süper ortak/nadir/hiç kod görülen kullanmanız ile çalışmak mı?
  • typedef bu süper Tamam (yani kullanmak için değil, güçlü ya da çok güçlü bir neden değil mi?)
  • "süper" iyi bir şey olması, C biraz standart olmalı , yoksa bu bir typedef yeterli zaten ile kullanılır.

Düzenleme:Roddy typedef özel olması gerçeği elbette yapacaktır. Bu, herhangi bir türetilmiş sınıf redeclaring olmadan kullanmak mümkün olmayacaktır anlamına gelir. Aynı zamanda süper önlemek sanırım bu::süper zincirleme (ama bunun için ağlamak kim?).

Edit 2:Şimdi, birkaç ay ağır", can-ı gönülden Roddy bu bakış açısı ile aynı fikirde:" süper "özel olmalıdır." süper kullandıktan sonra Onun cevabı iki kez upvote isterdim, ama yapamam sanırım.

CEVAP
7 EKİM 2008, Salı


Bjarne Stroustrup bahsederC tasarım ve Evrimbir anahtar kelime olarak super ISO C Standartları Komitesi tarafından C standart olduğunu ilk kez kabul edildi.

Dag Bruck bu uzantı, temel sınıf "miras kaldı." demeyi önerdi Öneri, çoklu miras sorunu söz ve belirsiz kullanır bayraklı olurdu. Hatta Stroustrup ikna oldu.

Tartışmanın ardından, Dag Bruck (Evet, aynı kişi teklif verme) önerisi uygulanabilir, teknik olarak ses ve kusurları, ve işlenen çoklu kalıtım Binbaşı özgür olduğunu yazdı. Öte yandan, para için yeterli patlama olmadı ve Komite thornier bir sorun işlemek gerekir.

Michael Tiemann geç geldi, ve sonra typedef çiğnenmiş bir süper iyi, Bu yazı da soruldu aynı tekniği kullanarak işe yarayacağını gösterdi.

Yani, hayır, Bu muhtemelen hiç standartlaştırılmış alacak.

Eğer kopya yok iseTasarım ve Evrimkapak bu fiyata değer. Kullanılan kopyaları da 10 $için vardı olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bogdan Gabriel

    Bogdan Gabri

    5 Aralık 2006
  • bunliu

    bunliu

    2 Mayıs 2007
  • Sparta Spartanutul

    Sparta Spart

    18 HAZİRAN 2013

İLGİLİ SORU / CEVAPLAR