2012-10-29 23 views
52

Di solito si può definire una variabile per un ++ struct C, come infunzione per C++ struct

struct foo { 
    int bar; 
}; 

possiamo anche definire funzioni per una struct? Come useremmo quelle funzioni?

+3

Sì. Come per una classe in C++ – DumbCoder

risposta

86

Sì, uno struct è identico a class tranne per il livello di accesso predefinito (membro-saggio ed ereditarietà). (e il significato in più class trasporta quando utilizzato con un modello)

Ogni funzionalità supportata da una classe viene conseguentemente supportata da una struttura. Dovresti usare i metodi allo stesso modo in cui li useresti per una lezione.

struct foo { 
    int bar; 
    foo() : bar(3) {} //look, a constructor 
    int getBar() 
    { 
    return bar; 
    } 
}; 

foo f; 
int y = f.getBar(); // y is 3 
21

Le strutture possono avere funzioni come le classi. L'unica differenza è che sono pubbliche per impostazione predefinita:

struct A { 
    void f() {} 
}; 

Inoltre, le strutture possono anche avere costruttori e distruttori.

struct A { 
    A() : x(5) {} 
    ~A() {} 

    private: int x; 
};