Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15

Discussione: [c++] Composizione

  1. #11
    tnx!

    dato che parliamo di classi volevo chiederti lumi pure sui metodi virtual


    ho le seguenti classi

    class A {...virtual void metodo()=0;... }

    ora sulla class Bublic Class A {...} devo per forza implementare metodo() altrimenti mi diventa pure astratta , è possibile invece implementare quel metodo sulla class Cublic class B{...} senza implementarla su B ?



    dichiaro

    class A {...virtual void metodo();... } ,in questo modo la classe non è astratta ma mi dà errore se non la implemento! xchè? e se io volessi implementare il metodo solo sulla classe derivata Bublic Class A {...} ?
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

  2. #12
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Se una classe non implementa un metodo è astratta, non puoi lasciare un metodo non implementato e pretendere che la classe non sia asttratta; se B estende A e C estende B, e non vuoi implementare il metodo in B, ma solo in C, allora anche B sarà astratta

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #13
    la classe A diventa astratta se e solo se dichiaro "virtual void metodo()=0;" altrimenti se dichiaro solo "virtual void metodo();" mi dà errore nella classe A se non trova il metodo() implementato!

    io vorrei implementare metodo() in B e non in A in modo da poter usare un puntatore ad A che possa richiamare il metodo() di B senza rinunciare alla creazione di oggetti della classe A


    è possibile o non c'è nessun modo per la classe base di arrivare ai metodi delle classi derivate?
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

  4. #14
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Se una classe non implementa un metodo devi per forza renderla astratta e quindi non istanziabile, se vuoi istanziarla puoi dare un'implementazione fittizia, cioè che non fa niente, di quel metodo che poi reimplementi nella sottoclasse B, in questo modo se il metodo è virtual, sarà scelta l'implemetazione di B se l'oggetto è istanziato come B, ma se l'ogetto e istanziato come A sarà scelta l'implementazione di A.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  5. #15
    ok ,un ultima cosa e non ti disturbo +!

    che differenza c'è tra

    a)const void metodo(Classe&);
    b)void metodo(Classe&) const;
    c)void metodo(Classe&);
    d)void metodo(const Classe&);



    :master:
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.