2010-11-14 42 views
6

Possible Duplicate:
casting unused return values to voidC++ Dökümün amacı nedir?

Bazı kaynak kodunu okumak ve arayüz sınıflarında birçok sanal fonksiyonları bildirilmişve gibi varsayılan-uygulanmaktadır:

virtual bool FunctionName(TypeName* pointer) 
{ 
    (void)pointer; 
    return true; 
} 

Ben işaretçi döküm amacı olduğunu sorabilir miyim varsayılan uygulamada geçersiz mi?

+2

Bu, derleme olmamalıdır. –

+1

Bu, defalarca sorulmuştur. Bir şeyi "void" değerine dönüştürmek, dönüş değerini kullanmadığınızı gösterir. Senin durumunda, bu bir op değil. – zneak

+0

@zneak: "işaretçi" bir dönüş değeri değil. Bu sorunun duplisi olmasa da, bunun daha önce parametreler için de kapsandığına eminim. –

cevap

18

Çoklu amaçları (örneğin, uyarıları engellemek için) yazıldığı gibi bir no-op amaçlanmaktadır tamamen bir ifade

  • İşaretleme derleyici niyetinizi İşaretleme

    • dökme şeye bağlı olarak sizin bir dönüş türü bir şablon parametresi türü T tarafından verilmesi halinde bir aracın sonucu, bir fonksiyon şablonunda
    • (örneğin, bir işlev çağrısının sonucunu) göz ardı edilir derleyici ve programcı için niyet ve iade'ten farklı olabilecek bazı işlev çağrısının sonucu Bazı durumlarda. (Aşırı yüklenmiş bir virgül operatörü işlevini çağırmak asla (void)a, b) virgül operatörü aşırı seçmek için derleyici Tutukluk
      int f() { return 0; } void g() { return (void)f(); }
    • : T için açık döküm, void durumunda, bir derleme zamanı hatası önleyebilir. Eğer void bir sınıf nesnesi döküm eğer adlı bir operator void() orada asla Standart garanti (bazı GCC versiyonları olsa da, bu kuralı göz ardı) o

    Not. Sadece kullanılmayan parametresi hakkında derleyici'nın uyarı önlemek için var Bu durumda

  • 12

    . işlevi, bir değeri döndürmek için ihtiyacı olduğu

    +0

    1: Doğru cevap –

    +0

    Neden ilk etapta böyle bir parametreyi yapmak verdiği için? – stackptr

    +1

    Parametre, bu sanal işlevi de uygulayan başka bir sınıfın aslında bu parametreyi kullanması nedeniyle oluşabilir. –