Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563

    C++ Cosa è un'interfaccia?

    Like the title
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    In C++ non esiste dal punto di vista del lessico del linguaggio non esistono le interfacce.
    Tuttavia, un'interfaccia è praticamente la stessa cosa di una classe astratta in cui ci siano soltanto funzioni.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Una interfaccia e' una classe che contiene metodi pubblici puri virtuali, non contiene metodi statici, non contiene membri dati.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Come giustamente sottolineato da oregon, le funzioni devono essere tutte virtuali pure pubbliche non statiche.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    A questo proposito faccio una domanda "di teoria". Perchè in linguaggi "nuovi", tipo il C# (non so gli altri) l'ereditarietà multipla è stata eliminata e hanno tirato fuori le interfacce ? Alla fine una classe che implementa più interfacce è come una classe che eredita più classi astratta, o no ? Qualcuno mi può dare una spiegazione ?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Una cosa e' ereditare piu' interfacce, un'altra e' ereditare da piu' classi. Proprio per la differenza tra classi e interfacce ...

    Per la domanda iniziale, un esempio classico di interfaccia e' la IUnknown (per consuetudine i nomi di classi si fanno iniziare con C e quelle di interfacce con I) che costituisce la base della gerarchia di interfacce COM di Windows

    codice:
    class IUnknown
    {
    public:
       virtual HRESULT QueryInterface(
                         REFIID iid,
                         void** ppvObject) = 0;
       virtual ULONG AddRef() = 0;
       virtual ULONG Release() = 0;
    };
    Da questa deriva la IDispatch, basilare per la gestione degli oggetti COM

    codice:
    class IDispatch: public IUnknown
    {
    public:
       virtual HRESULT GetIDsOfNames(
          REFIID riid,
          OLECHAR FAR* FAR* rgszNames,
          unsinged int cNames,
          LCID lcid,
          DISPID FAR* rgDispld
       ) = 0;
       virtual HRESULT GetTypeInfo(
          unsigned int iTinfo,
          LCID lcid,
          ITypeInfo FAR* FAR* ppTinfo
       ) = 0;
       virtual HRESULT GetTypeInfoCount(
          unsigned int FAR* pctinfo
       ) = 0;
       virtual HRESULT Invoke(
          DISPD dispIdMember, 
          REFIID riid, 
          LCID lcid, 
          WORD wFlags, 
          DISPPARAMS FAR* pDispParams, 
          VARIANT FAR* pVarResult, 
          EXCEPINFO FAR* pExcepInfo, 
          unsinged int FAR* puArgErr 
       ) = 0;
    };

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Sì, ma sostanzialmente le interfacce possono essere considerate un sottoinsieme delle classi. O no ?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Sono classi particolari

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Originariamente inviato da oregon
    Sono classi particolari
    Appunto. Quindi perchè le interfacce sì e le classi no ? E' questo il nodo che mi sfugge.

  10. #10
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Bhe molte volte, utlizillando DirectX mi ritrovo fuori

    typedef interface Blabla *LPBlaBla
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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 © 2025 vBulletin Solutions, Inc. All rights reserved.