Beruflich Dokumente
Kultur Dokumente
#include <iostream>
using namespace std;
class Betrag {
public:
Betrag(int e, int c):euro(e),cent(c) {};
int get_euro() const { return euro; }
int get_cent() const { return cent; }
private:
int euro;
int cent;
}
2.3 Copy-Constructor
Mystring::Mystring(const Mystring& s) {
derstring = new char[strlen(s.derstring)+1];
strcpy(derstring, s.derstring);
}
2.4 Operatoren
// Pseudooperator
Betrag& Betrag::addiere(const Betrag& be) {
euro += be.euro + (cent + be.cent)/100;
cent = (cent + be.cent) % 100;
return *this;
}
//oder: Betrag& Betrag::operator+=(const Betrag & be) {
Betrag& Betrag::operator+(const Betrag& be) {
//siehe oben
}
// Typumwandlungskonstruktor
class Complex {
public:
Complex(double re): re(re), im(0) {}
friend Complex operator+(const Complex& r,
const Complex& z);
private:
double re, im;
}
2.5 Templates
template<class T>
void swap(int& a, int& b) { void swap(T& a, T& b) {
int c = a; T c = a;
a = b; a = b;
b = c; b = c;
} }
template<class T>
class Array {
public:
Array(int l):laenge(l) { inhalt = new T[l]; }
~Array();
bool operator==(Array<T>& a);
private:
int laenge;
T* inhalt;
}
template<class T>
Array<T>::~Array(){delete[] inhalt);}
template<class T>
bool Array<T>::operator==(Array<T>& a) {
if(laenge != a.laenge)
return false;
return true;
}
int main() {
SArray<double, 100> sa;
Array<double> da(100);
}
2.6 Forwarddeklaration
class Fahrer; class Kfz;
2.7 Vererbung
class Kfz {…};
class Pkw:public Kfz {…};
class Dienstwagen:public Pkw:public Inventar {…};
// Abstrakte Basisklasse
class GraphObj {
virtual void zeichne() = 0;
}
2.8 Exceptions
try { double& operator[](int i) throw(int)
… // Execute {
} … // Do something
catch(int index) { throw i;
… // Errorhandling }
}
2.9 new_handler
#include <new>
void my_newhandler() {
cout << „Fehler bei new“ << endl << exit(-1);
}
int main() {
set_newhandler(my_newhandler);
int groesse;
cin >> groesse;
int * a = new int[groesse];
}
2.10 Assertions
#include <cassert>
int main() {
int p = 5; int q = 0;
double c = sub(p,q);
std::assert(c != 0);
}
int main() {
string dateiname = „“;
cin >> dateiname;
ifstream rein(dateiname.c_str());
in tanz;
rein >> anz;
double* feld = new double[anz];
rein >> feld[0];
double max = feld[0];
4 Casts
const_cast<char*>(char* const): Entfernt const von einem Datentyp
static_cast<char>(long): Gleitkommaumwandlung
reinterpret_cast: Gefährlicher Cast, da alles Konvertiert wird
(teilweise plattformabhängig, Zeigercasts)
dynamic_cast: Klassenvererbung