static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum( 2,3); ipv object K.minimum( 2,3); voor dataleden variabelen behoren niet tot een object, maar tot de klasse zelf dwz dat ze maar in enkelvoud voorkomen, ongeacht het aantal objecten dat er van de klasse is
Eigen operatoren Zelf definiëren van operatoren (op voorwaarde dat ten minste 1 van de operanden een klasse-object is Lijst van operatoren Prioriteitsregels blijven behouden c = a + b ipv c= a.telop(b)
Eigen operatoren voorbeeld Vectorsom:( x 1, y 1 ) + ( x 2, y 2 ) = ( x 1 + x 2, y 1 + y 2) class Vector {... Vector operator+( const vector &v) const{ return Vector( x + v. x, y + v. y); } int main () { Vector u( 3,1), v( 1,2), s; s = u + v; // s = u. operator+( v); return 0;}
Impliciete conversie dmv een constructor class K { public: K() {...} K (T x) {...} // constructor met 1 par van type T // + ev. defaultparameters } Dan mag: K k; T t; k = t; // impliciete conversie " k = t " wordt (door compiler) automatisch " k = K( t) "
Friend-functie is geen lid van de klasse, maar heeft toch toegang tot private leden van de klasse! Class K{ public: K(int ii){i = ii;} Private: int i; friend void toon(K x); } void toon (K x){cout << x.i<<endl;} Int main() {K y(5); toon(y); return 0;} //uitvoer: 5
Friend functie inbreuk op OO en inkapseling vermijden indien mogelijk