- Ikke inkluder
.cpp
men heller header filer.h
c++std::vector
dynamic lengthc++std::array
fixed length
- begrensinger av verdier
- istedet for
true
ellerfalse
- god kombinasjon med switch cases
enum class CoffeeType {
DARK, CAPPUCCINO, ESPRESSO
};
void prepareCoffee(CoffeeType coffeeType) {
switch(coffeeType) {
case CoffeeType::DARK:
prepareDarkCoffee();
break;
case CoffeeType::CAPPUCCINO:
prepareDarkCoffee();
break;
case CoffeeType::ESPRESSO:
prepareDarkCoffee();
break;
}
}
-
assert
- stopper programmet med en gang hvis utsagn er
false
- stopper programmet med en gang hvis utsagn er
-
exceptions
throw
"kaster" feilmelding uttry
tester ut en funksjoncatch
"fanger" feilmeldingen som ble kastet
void func() {
if (!statement) {
throw error;
}
}
try{
func();
} catch(error) {
/* behandle error*/
}
- definerer hvor variabler er definert i koden
- lages med
{}
{ // starten på scope
} // slutten på scope
- funksjoner kaller andre funksjoner
- variabler sendes og fordeles gjennom funksjons-parametere og retur-verdier
- funksjonene er et abstraksjonslag
public
ogprivate
funksjonerstruct
vs.class
struct
public by defaultclass
private by default
- variabler sendes og fordeles gjennom objekter
- objekter er et abstraksjonslag
- "kopierer" kode fra en klasse til en annen
class Ball : public MouseFollower {}; // Ball klassen arver innhold fra MouseFOllower
protected
- kan overskrive funksjoner som er arvet fra andre klasser
- brukes til å lage et hierarki av klasser
Objektorientering | Prosedyreorientering | ||
---|---|---|---|
(+) | hiding of state (variables) | (+-) | state is not hidden |
(+) | abstraction | (+-) | harder to abstract |
(+) | reuse through inheritance | (+-) | reuse functions explicitly |
(-) | performance | (+) | performance |
- definere en spesiell funksjon for en operator for udefinerte datatyper
- f.eks definere at vektorer (fra matematikken) kan legges sammen og skrives ut til terminalen
- bruk
statick_cast<>()
til å oversette mellom datatyper (klasser)- kan bare oversette fra
child
tilparent
, ikke motsatt
- kan bare oversette fra
- kopierer kun medlemsvariabler arvet fra
parent
- keyword -
virtual
- fungerer kun med referanser
- "Pure
virtual
function" kan ikke kalles slik som en vanlig funksjon
- har minst en pure virtual function
- kan ikke lage en instanse av denne klassen, kan bare arve fra den
- keyword -
friend
- gir tilgang til
private
ellerprotected
medlems-variabler og funksjoner - nyttig til operator overloading
- kan spesifisere enkelt funksjoner som skal være
friend
- må deklareres innen for klassen
child
må bruke bruke konstruktører tilparent
- kan definere flere konstruktører for samme objekt
- en
struct
som inneholder to felt som kan ha ulike datatyper - nyttig i feks histogram
- finn ut data type automatisk
- bruk i feks for-loop med flere datatyper, ref
std::pair
- Når et program starter får det en
stack
- Når det trenger mer minne kan den allokere
heaps
- operativsystemet refererer til minneadresser
- minneadresser er bare tall
- deklareres med f.eks.
int* ptrToInt
- deallocating form the
heap
brukdelete
for å frigjøre minne etter bruk
- stack:
- mindre plass i minnet (1-8 MB)
- minne allokeres og deallokeres dynamisk
- deallokeres i slutten av skopet
- heap:
- kan bruke hele minnet
- må allokere og deallokere minne manuelt
new
allokoerer minne i heapdelete
deallokerer minne i heap- bedre metode:
unique_ptr
er en smart pointer som deallokerer minne automatisk
- motsatte av en konstruktør (constructor)
- kalles når objektet blir slettet
- bruk
unique_ptr
for unike pekere - eller
shared_ptr
for pereke som skal deles mellom objekter
unique_ptr
:- en peker som peker til et objekt
- objektet blir slettet når pekeren blir slettet
- pekeren blir slettet når objektet blir slettet
shared_ptr
:- en peker som peker til et objekt
- objektet blir slettet når det ikke er flere pekere til objektet
- pekeren blir slettet når objektet blir slettet