C ++ - Kurs im CS Center, erster Teil

Das Computer Science Center ist eine gemeinsame Initiative des Computer Science Club von POMI RAS, JetBrains und der Yandex Data Analysis School .

Das Zentrum soll talentierten Studenten und Absolventen ermöglichen, sich in Bereichen zu entwickeln, die für sie von Interesse sind: Informatik, Datenwissenschaft oder Software-Engineering.

Der zweiteilige C ++ - Kurs im Zentrum wird von Valery Mikhailovich Lesin, valery-l , Lehrer am CS-Zentrum und gemeinsamer Magistrat von ITMO und JetBrains "Software Development / Software Engineering", technischer Direktor von Simlabs, unterrichtet .

Der erste Teil des Kurses wird benötigt, um die C ++ - Basis aufzubauen: Bis zum Ende des Semesters werden die Studenten wahrscheinlich genug Programmierkenntnisse in dieser Sprache erwerben, um ihre Probleme zu lösen. Bisher ohne Bewegungssemantik, sfinae, aber um dies zu beginnen, wird höchstwahrscheinlich ausreichen.

Für Schüler mit Erfahrung in C ++ hilft dieser Teil, Lücken zu schließen. Zum Beispiel beim Verknüpfen, Arbeiten mit Speicher, Lambda-Funktionen und anderen Themen. Die Vorträge bieten sowohl einen Rückblick auf etablierte Praktiken als auch einen Überblick über die Möglichkeiten, die die neuesten Sprachstandards bieten. Der Kurs ist so konzipiert, dass Studierende unterschiedlicher Niveaus darin neues Material für sich finden können.

Schöne Aussicht!

1. Organisation der C ++ - Programmentwicklung.

Geschichte und Philosophie der Sprache. Anwendbarkeit: Vor- und Nachteile. Bibliotheken, Zusammenstellung, Entwicklungswerkzeuge. Variablen, Bedingungen, Schleifen, Funktionen, einfache Ein- und Ausgabe.


2. Das Layout der Programme. Broadcast-Einheiten. Erklärungen und Definitionen. ODR. Globale und lokale Variablen.


3. Arbeiten Sie mit dem Speicher. Ausführen von Programmen.

Architektur, Prozess und Threads. Prozessspeichergerät, Seitenspeicher. Dereferenzierung, Zeiger, Arrays. Arithmetik von Zeigern, Konstanten und konstanten Zeigern. Links, Initialisierung konstanter Links, Speicherzuordnung, Speicherlecks.


4. Eingebaute Typen, Anweisungen und Bediener.

Typgrößen, explizite Typkonvertierung, ungültiger Typ, nullterminierte Zeichenfolgen, Aufzählungen, ein Synonym für typedef. Erklärungen, Umfang und Sichtbarkeit, Struktur. Operatoren, Ausdrücke, Inkrementieren / Dekrementieren, Anweisung (Anweisung) der Wahl. Schleifen, Kommentare, Operatoren.


5. Funktionen.

Strukturelle Programmierung. Funktionen deklarieren, Parameter übergeben, Arrays übergeben, einen Wert zurückgeben. Überlastung, Funktionsauswahl. Argumente standardmäßig. Beliebige Anzahl von Argumenten, Zeiger auf eine Funktion. Binden & Funktionieren.


6. Klassen.

Klassentypen, Klassendefinition, Mitgliedsfunktionen, Zugriffskontrolle, Klassenfunktionsdefinition, 4 Hauptfunktionen, Swap-Trick. Klassenfelder.


7. Namespace. Operatoren überschreiben.

Namespace deklarieren und verwenden, Direktive verwenden, Deklaration verwenden, nach Koenig suchen. Überladen von Operatoren, was möglich und unmöglich ist, wo und wie Operatoren geschrieben werden, Beispiele für Operatordeklarationen, explizite und implizite Konvertierung. Gemischte Arithmetik. Freund Features. Präfix- und Postfix-Inkrement. Funktoren. Operatoren für einen Zeiger. Wie mache ich Funktionen?


8. Dynamischer Polymorphismus: einfache Vererbung.

Realisierung von Objekten. Zusammensetzung. Vererbung Position der Felder. Merkmale der Vererbung. Konstruktoren. Polymorphes Verhalten. Typfeld, virtuelle Funktionen, Tabelle der virtuellen Funktionen, Slicing, reine virtuelle Funktionen, öffentliche und private Vererbung. Zerstörer. Rufen Sie virtuelle Funktionen auf.


9. Dynamischer Polymorphismus: Mehrfach- und virtuelle Vererbung.

Mehrfachvererbung, Mehrdeutigkeitsauflösung, Ausblenden von Funktionen, Wiederholen der Basisklasse. Virtuelle Vererbung, Wiederholung der Basisklasse, Zugriffskontrolle, Verwendung geschützter Methoden, Casting von dynamischem Typ und Referenz, static_cast und dynamic_cast, Typ-ID-Operator, Position eines Objekts im Speicher.


10. Einführung in Vorlagen. Klassen- und Funktionsvorlagen.

Vorlagenklasse, Vorlagenfunktionen, Vorlagenfunktionen, Instanziierung, Vorlagenparameter, Typäquivalenz, Typinferenz, Funktionsüberladung, Algorithmusauswahl, Standardargumente.


11. Einführung in Vorlagen. Spezialisierung. Beziehung zur Vererbung. Intelligente Zeiger.

Spezialisierung von Klassenvorlagen. Teilspezialisierung. Allgemeine nicht standardmäßige Basis. Explizite Instanziierung. Spezialisierung von Funktionsvorlagen. CRTP Vorlage typedef. Vererbung und Muster. Vorlagenfunktionen in einer generischen Klasse. Dynamischer und statischer Polyformismus.


12. Intelligente Zeiger.


13. Strategien zur Fehlerbehandlung. Debuggen


Was zusätzlich zu lesen


  • B. Mu. Effektive C ++ - Programmierung.
  • S. Meyers. Effizientes und modernes C ++: 42 Empfehlungen für die Verwendung von C ++ 11 und C ++ 14.

Source: https://habr.com/ru/post/de467781/


All Articles