Normaal gesproken kunnen we een variabele definiëren voor een C++-struct, zoals in
struct foo {
int bar;
};
Kunnen we ook functies definiëren voor een struct? Hoe zouden we die functies gebruiken?
Antwoord 1, autoriteit 100%
Ja, een struct
is identiek aan een class
behalve het standaard toegangsniveau (voor leden en qua erfenis). (en de extra betekenis die class
heeft bij gebruik met een sjabloon)
Elke functionaliteit die door een klasse wordt ondersteund, wordt bijgevolg ondersteund door een struct. Je zou dezelfde methoden gebruiken als je ze voor een klas zou gebruiken.
struct foo {
int bar;
foo() : bar(3) {} //look, a constructor
int getBar()
{
return bar;
}
};
foo f;
int y = f.getBar(); // y is 3
Antwoord 2, autoriteit 24%
Structs kunnen functies hebben, net als klassen. Het enige verschil is dat ze standaard openbaar zijn:
struct A {
void f() {}
};
Bovendien kunnen structs ook constructors en destructors hebben.
struct A {
A() : x(5) {}
~A() {}
private: int x;
};