Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565

    C++ - Le struct hanno le funzioni?

    Fino a poco tempo fa credevo che le struct potessero contenere solo dati membro e poi ci pensavano le classi a fare la vera programmazione orientata ad oggetti.
    Ho scoperto da poco che le struct hanno gli specificatori di accesso public, private, protected, possono essere ereditate, possono avere persino funzioni!

    Ma queste funzionalità non ci sono nel C,vero?
    Quali sono quindi le differenze tra una classe e tra una struct "estesa"?
    "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
    Le struct del C++ sono funzionalmente identiche alle classi. L'unica differenza è che i membri di una struct sono di default pubblici, mentre i membri di una classe sono di default privati. Le strutture C invece sono semplici strutture dati.

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Quindi le struct possono anche avere funzioni virtuali, polimorfismo, essere struct astratte?
    Se si, che cazzo hanno inventato a fare le classi? O meglio, perchè hanno esteso le struct?
    E in termini di performance??
    "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

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Le struct "estese" se non erro sono state introdotte dopo le classi, ma sostanzialmente ne possiedono tutte le caratteristiche, per cui credo (non le ho mai usate a tale scopo e non si usano mai, quindi non ho la certezza matematica) che implementino anche tutte le caratteristiche OO. Tuttavia capirai che per una questione di chiarezza si tende ad usare più le classi che le struct per gli aspetti più peculiari della programmazione OO. Sinceramente non so se a livello di performance ci siano differenze, ma non credo.

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Attendo anche il giudizio del Dott.Oregon.
    "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

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da XWolverineX
    Attendo anche il giudizio del Dott.Oregon.
    Niente dottori ... sto bene ...

    L'unica differenza tra le due sintassi e' quella gia' descritta ...
    Quindi, scrivere

    struct A
    {
    }

    equivale a

    class A
    {
    public:
    }

    e anche

    struct A
    {
    private:
    }

    equivale a

    class A
    {
    }

  7. #7
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Originariamente inviato da XWolverineX
    Quindi le struct possono anche avere funzioni virtuali, polimorfismo, essere struct astratte?
    Se si, che cVVoVe hanno inventato a fare le classi? O meglio, perchè hanno esteso le struct?
    E in termini di performance??
    In realtà credo che il processo sia stato inverso: quando hanno scritto i compilatori C++ hanno prima implementato le classi e poi hanno incluso anche il supporto per le struct, camuffandole. In altre parole, quando a un compilatore dici "struct" in realtà stai dicendo "class", cioè, usare le struct o le classi per il compilatore non fa la differenza... perchè sono la stessa cosa.

    Personalmente preferisco usare le struct solo se prevedono SOLO variabili mambro, e le classi negli altri casi.

    Almeno, se avessi scritto io un compilatore C++, avrei fatto così. Ma la mia è solo un'ipotesi...
    Svegliati, Neo. Matrix ti possiede...

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