2012-10-29 20 views
52

Zazwyczaj możemy zdefiniować zmienną do C++ struktury, jak wfunkcja dla C++ struct

struct foo { 
    int bar; 
}; 

możemy również zdefiniować funkcje struct? Jak wykorzystamy te funkcje?

+3

Tak. Tak samo, jak w przypadku klasy w C++ – DumbCoder

Odpowiedz

86

Tak, struct jest identyczny z class z wyjątkiem domyślnego poziomu dostępu (w zależności od użytkownika i dziedziczenia). (i dodatkowe znaczenie class przenosi się w przypadku użycia z szablonem)

Każda funkcjonalność obsługiwana przez klasę jest konsekwentnie wspierana przez strukturę. Używałbyś metod tak samo, jak używałbyś ich dla klasy.

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

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

Struktury mogą mieć funkcje podobne do klas. Jedyną różnicą jest to, że są one domyślnie publiczne:

struct A { 
    void f() {} 
}; 

Dodatkowo, konstruktory mogą również zawierać konstruktory i destruktory.

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

    private: int x; 
};