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 ==
Konstruktoren:
* string() https://cplusplus.com/reference/string/string/string/
* string(data)
* string(int count, char c)


try {
Zugriff/Manipulation
  throw ArgumentException ("too many positional parameters:", arg0);
* size_t length() Aktuelle Länge
catch (const ArgumentException &e){
* size_t capacity() Liefert aktuell Puffergröße
  doIt(e.message();
* void resize(size_t newLen, [char cc = '\0']) Setzt Länge durch Kürzen oder Auffüllen mit cc
catch (char param) {
* reserve(size_t newSize): Setzt Kapazität
  doIt(); }
* clear() Kürzt auf 0
catch (...) {
* bool empty() Test auf Leerstring
  doIt();
* int compare(data) Vergleich: <0 0 >0 https://cplusplus.com/reference/string/string/compare/
}
* string substr(size_t pos, size_t len) Teilstring erstellen
</syntaxhighlight>
 
* 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
* string to_string(NUMERIC val) int, long, ... long double in String wandeln https://cplusplus.com/reference/string/to_string/
 
Iteratoren:
* begin
* end
* rbegin Vom Ende her
* rend
* cbegin Ein const-Iterator
* cend
* crbegin
* crend


= 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;
</syntaxhighlight>
 
* static_cast:
for (auto rit=str.rbegin(); rit!=str.rend(); ++rit){
<syntaxhighlight lang="c++">
  std::cout << *rit;
void *ptr = fromStorage();
}
auto ptr2 = static_cast<char*>(ptr);
for (auto it=str.begin(); it!=str.end(); ++it)[
</syntaxhighlight>
    std::cout << *it;
== 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.
for ( auto it=str.cbegin(); it!=str.cend(); ++it){
<syntaxhighlight lang="c++">
    std::cout << *it;
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>
</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.
== Vector ==
<syntaxhighlight lang="c++">
<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>
</syntaxhighlight>
== static_cast ==
 
In allen anderen Fällen. Ersetzt den C-Cast.
== RegExpr ==
<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)