Advanced C++
Обучението предоставя задълбочени умения и знания необходими на всеки C++ програмист. Ще изучавате теми за напреднали - наследяване и полиморфизъм, създаване, писане и четене от файлове, предефиниране на оператори, създаване на темплейти (шаблони), работа с изключения, контейнери, алгоритми, стекове, опашки и дървета, namespaces и други.
Ще се научите да:
- Разработвате конзолни приложения използвайки класове и обекти
- Създавате гъвкави модели с принципите на Обектно-Ориентирано програмиране
- Организирате данни чрез колекции и масиви
- Работите със стрингове – търсене, извличане, заместване, разделяне и др.
- Използвате контролни структури – условни оператори и цикли
Програма на курса
1. Functions
- Math Library Functions
- Function Definitions with Multiple Parameters
- Function Prototypes and Argument Coercion
- Random Number Generation
- Introducing enum
- Storage Classes
- Function Call Stack and Activation Records
- Functions with Empty Parameter Lists
- Inline Functions
- References and Reference Parameters
- Default Arguments
- Function Overloading
- Function Templates
2. Arrays and Vectors
- Arrays
- Declaring Arrays
- Examples Using Arrays
- Passing Arrays to Functions
- Searching Arrays with Linear Search
- Sorting Arrays with Insertion Sort
- Multidimensional Arrays
- Introduction to C++ Standard Library Class Template vector
3. Pointers and Pointer-Based Strings
- Pointer Variable Declarations and Initialization
- Pointer Operators
- Passing Arguments to Functions by Reference with Pointers
- Using const with Pointers
- Selection Sort Using Pass-by-Reference
- sizeof Operators
- Pointer Expressions and Pointer Arithmetic
- Relationship Between Pointers and Arrays
- Arrays of Pointers
- Function Pointers
- Introduction to Pointer-Based String Processing
- Fundamentals of Characters and Pointer-Based Strings
- String Manipulation Functions of the String-Handling Library
4. Classes: A Deeper Look, Part 1
- Using #define, #ifndef and #endnf preprocessor directives
- Class Scope and Accessing Class Members
- Separating Interface from Implementation
- Access Functions and Utility Functions
- Constructors with Default Arguments
- Destructors
- When Constructors and Destructors Are Called?
- The Trap – Returning a Reference to a private Data Member
- Default Memberwise Assignment
- Software Reusability
5. Classes: A Deeper Look, Part 2
- const (Constant) Objects and const Member Functions
- Composition : Objects as Members of Classes
- friend Functions and friend Classes
- Using the this Pointer
- Dynamic Memory Management with Operators new and delete
- static Class Members
- Data Abs traction and Information Hiding
- Container Classes and Iterators
- Proxy Classes
6. Operator Overloading
- Fundamentals of Operator Overloading
- Restrictions on Operator Overloading
- Operator Functions as Class Members vs. Global Functions
- Overloading Stream Insertion and Stream Extraction Operators
- Overloading Unary Operators
- Overloading Binary Operators
- Converting between Types
- Overloading ++ and --
- Standard Library Class string
- explicit Constructors
7. Object-Oriented Programming: Inheritance
- Base Classes and Derived Classes
- protected Members
- Relationship between Base Classes and Derived Classes
- Constructors and Destructors in Derived Classes
- public, protected and private Inheritance
- Software Engineering with Inheritance
8. Object-Oriented Programming: Polymorphism
- Polymorphism Examples
- Relationships Among Objects in an Inheritance Hierarchy
- Invoking Base-Class Functions from Derived-Class Objects
- Aiming Derived-Class Pointers at Base-Class Objects
- Derived-Class Member-Function Calls via Base-Class Pointers
- Virtual Functions
- Summary of the Allowed Assignments Between Base-Class and Derived-Class Objects and Pointers
- Type Fields and switch Statements
- Abstract Classes and Pure virtual Functions
9. Templates
- Function Templates
- Overloading Function Templates
- Class Templates
- Nontype Parameters and Default
- Types for Class Templates
- Notes on Templates and Inheritance
- Notes on Templates and Friends
- Notes on Templates and static Members
10. Formatted Input/Output
- Formatting Output with printf
- Printing Integers
- Printing Floating-Point Numbers
- Printing Strings and Characters
- Other Conversion Specifiers
- Printing with Field Widths and Precisions
- Using Flags in the printf Format-Control String
- Printing Literals and Escape Sequences
- Formatting Input with scanf
- Using sprintf and sscanf
11. Stream Input/Output
- Streams: Classic Streams vs. Standard Streams
- iostream Library Header Files
- Stream Input/Output Classes and Objects
- Stream Output: Output of char* Variables, Character Output using Member Function put
- Stream Input: get and getline, istream, peek, putback and ignore
- Unformatted I/O using read, write and gcount
- Stream Manipulators: dec, oct, hex and setbase, precision, setprecision, width, setw
- Stream Format States and Stream Manipulators: showpoint, left, right, internal, fill, setfill, dec, oct, hex, showbase, scientific, fixed, uppercase, boolalpha, flags
- Stream Error States
- Tying an Output Stream to an Input Stream
12. Exception Handling
- Exception-Handling Overview
- Example: Handling an Attempt to Divide by Zero
- When to Use Exception Handling
- Rethrowing an Exception
- Exception Specifications
- Processing Unexpected Exceptions
- Stack Unwinding
- Constructors, Destructors and Exception Handling
- Exceptions and Inheritance
- Processing new Failures
- Class auto_ptr and Dynamic Memory Allocation
- Stand ard Library Exception Hierarchy
- Other Error-Handling Techniques
13. File Processing
- The Data Hierarchy
- Files and Streams
- Creating a Sequential File
- Reading Data from a Sequential File
- Updating Sequential Files
- Random-Access Files
- Creating a Random-Access File
- Writing Data Randomly to a Random-Access File
- Reading from a Random-Access File Sequentially
- Input/Output of Objects
14. Class string and String Stream Processing
- string Assignment and Concatenation
- Comparing strings
- Substrings
- Swapping strings
- string Characteristics
- Finding Strings and Characters in a string
- Replacing Characters in a string
- Inserting Characters into a string
- Conversion to C-Style char * Strings
- Iterators
- String Stream Processing
15. Regular Expressions
- The regular expressions language–literals and meta-characters, character classes,quantifiers, grouping characters, etc.
- Regular expressions in C++
- Searching, extracting, validating, splitting and replacing text by regular expressions
16. The Preprocessor
- The #include Preprocessor Directive
- The #define Preprocessor Directive: Symbolic Constants
- The #define Preprocessor Directive: Macros
- Conditional Compilation
- The #error and #pragma Preprocessor Directives
- The # and ## Operators
- Line Numbers
- Predefined Symbolic Constants
- Assertions
17. Data Structures
- Self-Referential Classes
- Dynamic Memory Allocation and Data Structures
- Linked Lists
- Stacks
- Queues
- Trees
18. Bits, Characters, C-Strings and structs
- Structure Definitions
- Initializing Structures
- Using Structures with Functions
- typedef
- Example: High-Performance Card Shuffling and Dealing Simulation
- Bitwise Operators
- Bit Fields
- Character-Handling Library
- Pointer-Based String-Conversion Functions
- Search Functions of the Pointer-Based String-Handling Library
- Memory Functions of the Pointer-Based String-Handling Library
19. Standard Template Library (STL): Containers and Iterators
- Introduction to the Standard Template Library (STL)
- Introduction to Containers, Iterators and Algorithms
- Sequence Containers: vector, list, deque
- Associative Containers: multiset, set, multimap, map
- Container Adapters: stack, queue, priority_queue
- Class bitset
20. Standard Template Library (STL): Algorithms
- fill, fill_n, generate and generate_n
- equal, mismatch and lexicographical_compare
- remove, remove_if, remove_copy and remove_copy_if
- replace, replace_if, replace_copy and replace_copy_if
- Mathematical Algorithms
- Basic Searching and Sorting Algorithms
- swap, iter_swap and swap_ranges
- copy_backward, merge, unique and reverse
- inplace_merge, unique_copy and reverse_copy
- Set Operations
- lower_bound, upper_bound and equal_range
- Heapsort
- min and max
21. More about Classes, Objects and Namespaces
- const_cast Operator
- namespaces
- Operator Keywords
- mutable Class Members
- Pointers to Class Members (.* and ->*)
- Multiple Inheritance
- Multiple Inheritance and virtual Base Classes
За записване и/или въпроси, свържете се с нас.