SORU
18 Ocak 2010, PAZARTESİ


uygulama ile saf sanal işlev

Benim temel anlayış saf sanal işlevi için, ancak saf sanal işlev için uygulama olabileceğini söylediler uygulama yok.

class A {
public:
    virtual void f() = 0;
};

void A::f() {
    cout<<"Test"<<endl;
}

Kod yukarıda TAMAM mı?

Saf sanal işlevi bir uygulama yapmak amacı nedir?

CEVAP
18 Ocak 2010, PAZARTESİ


Saf sanal işlevi doğrudan oluşturulacak türetilmiş bir tür, ancak temel türü hala bir uygulama tanımlayabilirsiniz uygulanması gerekir. Türetilmiş bir sınıf olabilir açıkça çağrı temel sınıf uygulaması (eğer erişim izinleri izin) kullanarak bir tam kapsamlı adı (arama A::f() örnek - eğer A::f() kamu ve korumalı). Gibi bir şey

class B : public A {

    virtual void f() {
        // class B doesn't have anything special to do for f()
        //  so we'll call A's

        // note that A's declaration of f() would have to be public 
        //  or protected to avoid a compile time problem

        A::f();
    }

};

Kullanmak durumunda edebileceğimi kapalı üst başım ne zaman var daha fazla veya daha az makul varsayılan davranış, ama sınıf tasarlanmış istediği tür-varsayılan davranış için çağrılması sadece açıkça. Ayrıca, her zaman kendi işlerini gerçekleştirmek için türetilmiş sınıfları istediğiniz ne durumda olabilir, ama aynı zamanda işlevsellik kümesini aramak mümkün olabilir.

Not o halde gerçek dil, değil bir şey görüyorum sık kullanılan (ve aslında bu yapılabilir gibi görünüyor sürpriz en C programcıları, hatta deneyimli olanlar).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008
  • makemebad35

    makemebad35

    17 NİSAN 2006
  • WHZGUD2

    WHZGUD2

    21 EYLÜL 2011