Functie voor C++ struct

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 structis identiek aan een classbehalve het standaard toegangsniveau (voor leden en qua erfenis). (en de extra betekenis die classheeft 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;
};

Other episodes