|
Emne |
Java |
C++ |
Bemærkninger |
|
Parametre i metodeerklæringer |
f( C x ) |
f( C* x ) eller f( C& x ) |
Objekter repræsenteres som pointer/reference. I java implicit, i C++ eksplicit (med & for reference og * for pointer). |
|
Metodekald på objekter |
x.m(); |
x->m(); eller x.m(); |
|
|
Keyword const |
|
f( const C& x) |
Keyword const angiver at metoden ikke ændrer ved parametren x. |
|
Keyword const |
|
class C { m() const; } |
Keyword const angiver at metoden ikke ændrer ved objektets tilstand (fx en get-metode) |
|
Polymorfisk nedarvning |
|
virtual |
Keyword virtual tillader at metoder kan benyttes polymorfisk ligesom i normal java. |
|
Metodeerklæring |
class X { void f() {?} } |
erklæring: vitual m(); implementering: void X::m(){?} |
Metodeerklæringen er delt i to: en erklæring og en implementering (<klasse>::<metodenavn>). |
|
Typen af strenge |
String |
const char* |
|
|
Sammenligning af strenge |
s1.equals(s2); |
strcomp( s1, s2); |
<string>.equals(<string>) returnerer true|false. strcomp returnerer et heltal (<0, >0, =0). |
|
Nedarvning |
class X extends Y implements I |
class X: public Y, public I |
|
|
Templates |
Vector v; Shape s = (Shape)v.elementAt(3); |
Vector<Shape*> v; Shape s = v.elementAt(3); |
Vector<X> er en template, hvor typen er parametriserbar. C++ vektoren kan indeholde objekter af klassen X eller subklasser af X. |
|
Interface-erklæringer |
Interface I { void m(); } |
class I { public: virtual void m() = 0; } |
Der findes ikke interfaces i C++ så man bruger i stedet en abstrakt klasse med udelukkende abstrakte metoder. |
|
Tilgængelighed |
int d; // default public int pu; privat int pr; |
int d; // default public: int pu; private: int pr; |
|
|
Hukommelseshåndtering |
Garbage Collection |
delete s; |
|
|
Typecasting |
Circle c = (Circle) s; |
Circle c = dynamic_cast<Circle*> (s); |
|