Bearbeiten von „C-plus-plus“

Zur Navigation springen Zur Suche springen

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 3: Zeile 3:
== Links ==
== Links ==
* [[C-plus-plus-Scrambler]]
* [[C-plus-plus-Scrambler]]
* [[STL C++]]
* [[https://cpp.sh/ C++-Shell online]]


= Klassen =
= Klassen =
Zeile 24: Zeile 22:
     }
     }
};
};
class Vector : public Complex {
  Vector(): Complex() {}
  ~Vector() {}
  Vector(const Vector &src): Vector(src): Complex(src) {}
  Vector& operator =(const Vector& src): { Complex::operator =(src); return *this; }
}
</syntaxhighlight>
</syntaxhighlight>
== Beispiel Interface ==
== Beispiel Interface ==
<syntaxhighlight lang="c++">
<syntaxhighlight lang="c++">
Zeile 66: Zeile 57:
   const char* m_message;
   const char* m_message;
};
};
</syntaxhighlight>
= STL =
== String ==
* size_t length() Aktuelle Länge
* size_t capacity() Liefert aktuell Puffergröße
* void resize(size_t newLen, [char cc = '\0']) Setzt Länge durch Kürzen oder Auffüllen mit cc
* reserve(size_t newSize): Setzt Kapazität
* clear() Kürzt auf 0
* bool empty() Test auf Leerstring
* char& at(int position) Liefert Zeichen von Position
* char& back() Letztes Zeichen
* char& front() erstes Zeichen
* append(data) https://cplusplus.com/reference/string/string/append/
* push_back(char cc) Zeichen anfügen
* char pop_back() Letztes Zeichen entfernen und zurückgeben
* insert(size_t pos, data) https://cplusplus.com/reference/string/string/insert/
* string& erase(size_t pos, size_t len) Löschen https://cplusplus.com/reference/string/string/erase/
* iterator erase(iterator begin, iterator end) Löschen
Finden und Ersetzen
* replace(pos, len, data) https://cplusplus.com/reference/string/string/replace/
* size_t find(data) Substring finden https://cplusplus.com/reference/string/string/find/
* size_t rfind(data) Von hinten Substring finden
* find_first_of(char cc)
* find_last_of(char cc)
Konvertierung
* int stoi()  Wandlung in int
* const char* c_str() C-String


try {
  throw ArgumentException ("too many positional parameters:", arg0);
catch (const ArgumentException &e){
  doIt(e.message();
catch (char param) {
  doIt(); }
catch (...) {
  doIt();
}
</syntaxhighlight>


= Casts =
== const_cast ==
Entfernt const Attribut.
<syntaxhighlight lang="c++">
<syntaxhighlight lang="c++">
const A a1;
#include <string>
const_cast<A&>(a1).f();               // remove const
std::string s;
s.length();
 
</syntaxhighlight>
</syntaxhighlight>
* static_cast:
 
== Vector ==
<syntaxhighlight lang="c++">
<syntaxhighlight lang="c++">
void *ptr = fromStorage();
auto ptr2 = static_cast<char*>(ptr);
</syntaxhighlight>
</syntaxhighlight>
== reinterpreter_cast ==
 
Diese kann zur Konvertierung zwischen Zeiger- und Ganzzahltypen, zwischen nicht verwandten Zeigertypen, zwischen Zeiger-zu-Glied-Typen und zwischen Zeiger-zu-Funktions-Typen verwendet werden.
== RegExpr ==
<syntaxhighlight lang="c++">
class A {int a; public: A();};
class B: public A {int b, c;};
void use_of_reinterpret_cast()
{
    A a1;
    long l = reinterpret_cast<long>(&a1);
    A* ap = reinterpret_cast<A*>(l);      // safe
    B* bp = reinterpret_cast<B*>(&a1);    // unsafe
    const A a2;
    ap = reinterpret_cast<A*>(&a2);  // error, const removed
}
</syntaxhighlight>
== dynamic_cast ==
Ein Zeiger (oder Verweis) auf eine Klasse kann auf eine beliebige von dieser Klasse abgeleitete Klasse zeigen (verweisen). Gelegentlich kann es wünschenswert sein, einen Zeiger auf die vollständig abgeleitete Klasse oder auf ein anderes Unterobjekt des vollständigen Objekts zu erhalten. Der dynamische Cast bietet diese Möglichkeit.
<syntaxhighlight lang="c++">
class A {public: virtual void f();};
class B {public: virtual void g();};
class AB: public virtual A, public B {};
void simple_dynamic_casts()
{
  AB ab;
  B* bp = &ab;        // no casts needed
  A* ap = &ab;
  AB& abr = dynamic_cast<AB&>(*bp);  // succeeds
  ap = dynamic_cast<A*>(bp);        assert(ap!= NULL);
  bp = dynamic_cast<B*>(ap);        assert(bp!= NULL);
  ap = dynamic_cast<A*>(&abr);      assert(ap!= NULL);
  bp = dynamic_cast<B*>(&abr);      assert(bp!= NULL);
}
</syntaxhighlight>
== static_cast ==
In allen anderen Fällen. Ersetzt den C-Cast.
<syntaxhighlight lang="c++">
<syntaxhighlight lang="c++">
auto size = static_cast<int>(size);
</syntaxhighlight>
</syntaxhighlight>

Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!
Du gibst uns hiermit deine Zusage, dass du den Text selbst verfasst hast, dass der Text Allgemeingut (public domain) ist, oder dass der Urheber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin. Bitte beachte, dass alle Info-Theke-Beiträge automatisch unter der „Gemeinfreiheit“ stehen (siehe Info-Theke:Urheberrechte für Einzelheiten). Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)