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

  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009
  • Miles Fisher

    Miles Fisher

    8 NİSAN 2009
  • OVERWERK

    OVERWERK

    6 Temmuz 2010