Warum sollten lokale Variablen erst an der Stelle ihrer ersten Verwendung definiert werden? Nenne zwei Argumente.
Erhöht die Lesbarkeit des Codes.
Vermeidet unnötigen Speicherverbrauch.
Konstanten können in C++ auf verschiedene Weisen definiert werden. Nenne zwei Weisen und erkläre den Unterschied.
const Schlüsselwort: z.B., const int x = 10; - Definiert eine unveränderbare Variable.
const
const int x = 10;
constexpr Schlüsselwort: z.B., constexpr int y = 20; - Definiert eine Konstante, die zur Compile-Zeit ausgewertet wird.
constexpr
constexpr int y = 20;
Korrigiere folgenden Code:
if [n < 7] {
cout "n < 7\n";
cout "n ist " << n << ’\n’;
cout "Und weiter geht es...\n"
}
if (n < 7) {
cout << "n < 7\n";
cout << "n ist " << n << '\n';
cout << "Und weiter geht es...\n";
Welche Buchstabenfolge wird hier ausgegeben?
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 7; ++i) {
switch (i) {
case 1:
cout << "A";
break;
case 2:
case 3:
cout << "B";
// No break statement here, so it falls through to case 4
case 4:
cout << "C";
default:
cout << "D";
return 0;
DADBCCDD
Wofür wird das Schlüsselwort „auto“ verwendet? Gib ein Code-Beispiel.
Automatische Typableitung.
auto x = 42; // int
auto y = 3.14; // double
Warum sollten globale Variablen vermieden werden?
Erhöht die Komplexität und Fehleranfälligkeit.
Erschwert das Debugging und die Wartung.
Wie wird ein String zu „int“ umgewandelt?
Kurzes Codebeispiel.
#include <string>
#include <sstream>
std::string str = "123";
int num;
std::stringstream(str) >> num;
Erkläre das Konzept des Iterators.
Ein Iterator ist ein Objekt, das einen Zeiger auf ein Element in einer Containerstruktur darstellt und ermöglicht, über die Elemente zu iterieren.
Ein Iterator in C++ ist ein Objekt, das eine allgemeine Schnittstelle zum Durchlaufen von Elementen in einer Containerstruktur wie Arrays, Vektoren, Listen oder anderen Sequenztypen bereitstellt. Iteratoren sind ein zentrales Konzept in der C++ Standardbibliothek (STL) und ermöglichen die einheitliche Verarbeitung von Datenstrukturen, unabhängig von ihrer spezifischen Implementierung.
Wie unterscheidet sich die Suche in einem Set von der Suche in einem sequentiellen Container?
set: logarithmische Zeitkomplexität, da es intern als Baumstruktur organisiert ist.
set
Sequentielle Container (z.B., vector): lineare Zeitkomplexität.
vector
Warum sind die Funktionen aus der STL (z.B. accumulate) handgeschriebenen Schleifen vorzuziehen?
Kürzerer und lesbarer Code.
Potenziell bessere Optimierungen durch den Compiler.
Wie lässt sich ein "Typmonster" wie std::map<std::string, std::vector<std::string>>::const_iterator mit einem eigenen Namen belegen?
std::map<std::string, std::vector<std::string>>::const_iterator
using MyIterator = std::map<std::string, std::vector<std::string>>::const_iterator;
Wie lautet der Typ "Referenz auf eine Ganzzahlvariable"?
int&
Was ist die Ausgabe dieses Codes?
int f(int a, int& b) {
++a;
++b;
return a + b;
int x = 2;
int y = 2;
cout << f(x, y) << ":" << x << " : " << y;
6 : 2 : 3
Welche Buchstabenfolge wird ausgegeben?
void f(int i=0) {
void f(char i) {
void f(const char* i) {
f(); // A
f("Hallo"); // C
f('W'); // B
f(1); // A
ACBA
Welche drei Grundklassen kennt die C++11-Zeitbibliothek?
std::chrono::duration, std::chrono::time_point, std::chrono::steady_clock
std::chrono::duration
std::chrono::time_point
std::chrono::steady_clock
C++98 kennt das std::pair mit zwei Elementen. Wie heißt die C++11-Verallgemeinerung auf mehrere Elemente?
std::pair
std::tuple
Welchen Typ haben die Variablen a und b?
auto a = make_tuple(11, 'c', true);
auto b = get<1>(a);
a: std::tuple<int, char, bool>
a
std::tuple<int, char, bool>
b: char
b
char
Was ist an diesem Code "böse"?
struct date {
int year;
int month;
int day;
};
date d;
d.year = 2004;
d.month = 11;
d.day = 29;
Keine Initialisierung für date d; könnte zu undefiniertem Verhalten führen, wenn nicht alle Felder initialisiert werden. Es wäre besser, einen Konstruktor zu verwenden oder date d{2004, 11, 29};.
date d
date d{2004, 11, 29};
Was unterscheidet eine Klasse von einer Struktur?
Standard-Zugriffsmodifizierer:
Klasse: privat
Struktur: öffentlich
Klassen sind oft für komplexere Datenstrukturen und Methoden vorgesehen, während Strukturen für einfachere Datengruppierungen verwendet werden.
Was ist die Aufgabe des Konstruktors?
Initialisiert eine neue Instanz einer Klasse.
Was ist die Aufgabe des Destruktors?
Führt Aufräumarbeiten durch, wenn eine Instanz einer Klasse zerstört wird.
Für was steht das Schlüsselwort this?
this
Zeigt auf das aktuelle Objekt der Klasse.
Ermöglicht den Zugriff auf die Member des aktuellen Objekts.
Welches Schlüsselwort kennzeichnet Klassenfunktionen und -variablen?
static
Zeichne eine Vererbungshierarchie deiner Wahl mit 5 fachlichen Klassen.
Tier
Säugetier
Hund
Katze
Vogel
Adler
(Diagramm: Tier -> Säugetier -> Hund, Katze; Tier -> Vogel -> Adler)
Welche Buchstabenfolge kommt heraus?
class A {
public:
virtual void f() const { cout << "A"; }
class B : public A {
virtual void f() const { cout << "B"; }
class C : public B {
virtual void f() const { cout << "C"; }
C c;
A& ra = c;
B& rb = c;
C& rc = c;
ra.f();
rb.f();
rc.f();
CCC
———————
Welche der beiden Varianten nennt man "polymorph"?
C C C
——————
virtual Funktionen in Klassenhierarchien.
virtual
Was bedeutet das Wort "polymorph"?
"Vielgestaltig" - die Fähigkeit, dass eine Funktion unterschiedlich je nach Objekt, durch das sie aufgerufen wird, ausgeführt wird.
Zuletzt geändertvor 7 Monaten