چه کسانی این کتاب را می‌خوانند

دانشجوعلاقه‌مند یادگیری
کتابخوان حرفه‌ایلذت مطالعه
نویسندهالهام‌گیری

Modern C++ For Software Developers: Serious C++ Development

Modern C++ For Software Developers: Serious C++ Development

قیمت نهایی

۴۰٬۰۰۰ تومان۴۹٬۰۰۰ تومان۱۸٪ تخفیف
  • تخفیف زمان‌دار−۹٬۰۰۰ تومان

۹٬۰۰۰ تومان صرفه‌جویی نسبت به قیمت اصلی

نسخه اصلی و اورجینال

بلافاصله پس از خرید، فایل کتاب روی دستگاه شما آمادهٔ دانلود است.

تحویل فوری
پرداخت امن
ضمانت فایل
پشتیبانی

مشخصات کتاب

ناشر
Leanpub
سال انتشار
۲۰۲۲
فرمت
PDF
زبان
انگلیسی
حجم فایل
۵٫۶ مگابایت

دربارهٔ کتاب

Modern C++ is a complex language. Modern C++ For Software Developers exposes all of the essential concepts and techniques of Modern C++ so that you can build reliable and correct applications with confidence. This book covers the language constructs from C++11, C++14, C++17 and C++20 that are essential for serious Modern C++ development. The ideal book for serious development in Modern C++. Supercharge your C++ development with this comprehensive and practical treatment of Modern C++ features and techniques that are essential for modern C++ software development. Mastery of these concepts will let you create correct and reliable C++ applications with confidence. This book covers all of the important features from the C++11, C++14, C++17 and C++20 standards that every C++ developer should be comfortable with. This book also includes a comprehensive treatment of important standard C++ library functions that should belong in the arsenal of every Modern C++ developer. All techniques and concepts are explained in simple language and supported with functioning examples. Simply cut and paste the examples into https://wandbox.org and execute the code. This book can be read sequentially or you can go directly to topics of interest. The reminder of this preface is merely my opinionated meandering on C++ web applications. Is C++ web application development an anachronism? You can safely omit this part of the preface. Changelog Preface A Journey Through C++ Land C++ Is Not A Web Programming Language C Language Review Declarations And Definitions Statement Termination Literals Hexadecimal And Octal Literals Literal Prefixes And Suffixes Variable Scope In C And C++ C Language: Function Prototypes Forward Declarations The void Type C Language: C Style Casts Function-Style Casts Implicit Type Conversion C Language: Comma Operator C Language: Pointers Pointer Arithmetic Multiple Indirection With Pointers: Pointer To Pointer (**ptr) C Language: Arrays Single Dimensional Arrays Pointers To Arrays Arrays And Double Indirection (** ptr) Array Initializers Passing Single-Dimension Arrays to Functions Multi-Dimensional Arrays C Language: Strings C Language: Structs Struct Initialization Passing Structs to Functions Arrow Operator C Language: Files Reading Text Files EOF: End Of File Reading Lines From A Text File Formatted Input For A File Writing To Files Binary Files C Language: Memory Allocation C Language: Storage Class Specifiers extern Static Variables Static Variables Inside Functions Static Global Variables Register Variables C Language: const const In Functions C Language: Function Pointers C Language: setjmp And longjmp C Language: typedef C Language: Enumerations C Language: size_t And sizeof The Compile Time Operator sizeof C Language: Preprocessor Preprocessor Syntax The #define Directive Defining Function-like Macros The NULL Macro #error The #include Directive Conditional Compilation Directives #if, #elif, #else and #endif #ifdef and #ifndef Using defined #undef #line #pragma C Language: assert C Language: Calling C Functions From C++ Header Files Including A Non-System C Header File In C++ Code Call A Non-System C function From C++ Code C++ Classes Accessing Public Members The Scope Resolution Operator Class Function Implementations Static Class Members Object Assignment Local Classes C++ Namespaces The Global Namespace Bringing An Identifier Into Scope Importing Namespaces: The using Directive The Dangers of using namespace Unnamed Namespaces Joining Namespaces The std Namespace Namespace Alias C++ Structs And Unions Unions And Classes Anonymous Unions C++ Friend Functions And Friend Classes Forward Declarations Or Forward References Friend Classes C++ Inline Functions Defining Inline Functions Within a Class C++ Constructors And Destructors Constructors With One Formal Parameter Initializing An Object Calling Constructors And Destructors Private Destructors Passing Objects To Functions Returning Objects C++ Memory Allocation Initializing Allocated Memory Allocating Memory For Arrays Allocating Memory For Objects C++ Arrays Array Initialization With Single Parameter Constructors Creating Initialized And Uninitialized Arrays Constructing Arrays Dynamically C++ Pointers Incrementing Pointers Pointers To Member Functions Type Checking C++ Pointers Pointers To Data Members In A Class The this Pointer C++ References Function Reference Parameters Passing References To Objects Returning References Independent References Restrictions On References Dangling References Returning A Const Reference From A Class Member Function C++ Function Overloading Overloading Constructor Functions Finding the Address of an Overloaded Function Default Function Arguments Function Overloading And Implicit Casts C++ Const And Mutable Member Functions const Member Functions Overloading Functions With const Reference Parameters Const Classes Mutable Data Members Why Using const Is Important Volatile Variables Volatile Member Functions C++ Copy Constructors C++ Operators Creating An Operator Member Function Overloading The Shorthand Operators Operator Overloading Restrictions Operator Inheritance Operator Overloading Using a Friend Function C++ Class Inheritance Base Class Access Control Understanding Class Inheritance Inheritance And Protected Members Protected Base-Class Inheritance Pointers To Derived Classes References To Derived Types Inheriting From Multiple Base Classes Constructors, Destructors And Inheritance Passing Parameters to Base-Class Constructors Virtual Base Classes C++ Virtual Functions And Polymorphism Virtual Functions Calling a Virtual Function Through a Base Class Reference The Virtual Attribute Is Inherited Virtual Functions Are Hierarchical Pure Virtual Functions Abstract Classes Using Virtual Functions Implementing Class Interfaces In C++ Early And Late Binding Calling Virtual Functions In Constructors And Destructors Virtual Destructors C++: Static Class Members Static Class Members Static Data Members C++ Templates: Generic Functions Generic Functions A Function With Two Or More Generic Types Explicitly Overloading a Generic Function Overloading Function Templates Using Ordinary Parameters With Function Templates C++ Templates: Generic Classes An Example With Multiple Generic Data Types Using Non-Generic Arguments with class templates Allowed Non-generic Template Parameters Using Default Arguments With Class Templates Explicit Class Specializations The typename Keyword C++ Exception Handling Levels Of Exception Safety Catching Exception Class Types Standard Library Exceptions Using Multiple Catch Statements Handling Derived-Class Exceptions Catch All Exception Handler Rethrowing An Exception Exceptions And Destructors terminate() and unexpected() Setting Terminate and Unexpected Handlers The uncaught_exception Function C++ Run-time Type Identification typeid And References Applying Typeid To Class Templates C++ Type Cast Operators dynamic_cast Replacing dynamic_cast With typeid dynamic_cast And Different Derived Types dynamic_cast And References static_cast const_cast reinterpret_cast C++ And Assembler C++ Linkage Specification Summarizing the Differences Between C and C++ C++ Standard Template Library Containers Algorithms Iterators Other STL Elements The Container Classes General Theory Of Operation Vector Containers Accessing a Vector Through an Iterator Understanding begin() And end() Inserting and Deleting Elements in a Vector Storing Class Objects in a Vector List Containers push_front vs push_back Storing Class Objects in a List Maps (std::map) Inserting Elements Into A Map Getting A Map Key And A Key Value A Map Container Example Algorithms C++: Functors C++ Strings String Constructors String Operators String Concatenation Convert A String Object To A C-Style String STL Algorithms For Strings Modern C++: Type_Traits (C++11) Modern C++: Automatic Type Inference (C++11) Modern C++: Type Deduction With decltype (C++11) Type Attributes With auto And decltype Modern C++: Trailing Return Types (C++11) Simplification Of Code Modern C++: Variable Initialization (C++11) Copy Assignment Direct Initialization Brace Initialization The Meaning Of return {} std::initializer_list Modern C++: explicit Keyword (C++11) Modern C++: Range-Based For Loops (C++11) Modern C++: Lambda Functions (C++11) Lambda Specification Lambda Parameters Access To Variables In The Outer Scope Mutable Lambdas The Type Of A Lambda Generic Lambda Expressions Generalized Lambda Introducer Modern C++: Constexpr (C++11) constexpr Functions Restrictions On Constexpr Functions Arrays And constexpr Functions Evaluating constexpr Objects at Compile-time Modern C++: lvalue And rvalue References (C++11) Understanding lvalues and rvalues Functions Returning lvalues And rvalues lvalue References Modern C++: Move Semantics (C++11) lvalues And rvalues References Moving Objects Moving A lvalue To A rvalue Throwing Exceptions Modern C++: Smart Pointers (C++11) The Stack The Heap Types Of Memory Errors RAII The Smart Pointer Types std::unique_ptr std::shared_ptr Weak Pointers Modern C++: Variadic Templates (C++11) Variadic Function Templates Parameter Pack Expansion The sizeof... Operator Modern C++: nullpointer (C++11) Modern C++: Raw Strings (C++11) Raw Strings Encoding String Literals Modern C++: noexcept Attribute (C++11) Modern C++: Override And Final (C++11) The override Attribute Using override Can Prevent A Dangerous Bug Override And Trailing Return Types Final Member Functions Final Member Classes Modern C++: Constructor Delegation (C++11) Modern C++: Static Assertions (C++11) Modern C++: Deleted And Default Functions (C++11) default Keyword Deleted Functions And The Delete Keyword Modern C++: Typed Enums (C++ 11) C and C++ Enums Typed Enums Data Types For An Enum Enum Type Safety Forward References For Enums Well-defined Enum Sizes: Modern C++: Type Alias (C++11) Typedef Type Alias Declarations With The using Keyword (using =) using And Templates Modern C++: User Defined Literals (C++11) Restrictions On User Defined Types Naming Rules For User Defined Literals Modern C++: Template Constants (C++14) Modern C++: Return Type Deduction (C++14) Return type deduction for functions Modern C++: Generic Lambdas (C++14) Extended Capture In Lambdas Modern C++: Constexpr Template Constants (C++14) Modern C++: Constexpr Functions (C++14) Modern C++: Digit Separator (C++14) Modern C++: [[deprecated]] Attribute (C++14) Modern C++: Template Type Deduction (C++17) Template Argument Type Deduction For Functions Template Type Deduction For Classes Template Argument Deduction Guides Modern C++: Non-Template Type Parameters (C++17) Summary Of Non Template-Type Parameters Auto Non-Template Parameters Modern C++: Nested Namespaces (C++17) Modern C++: Constexpr If Statements (C++17) Modern C++: Initialization Of Auto Types (C++17) Modern C++: Structured Bindings (C++17) Using Structured Bindings Structured Binding For Arrays Inheritance And Structured Bindings Modern C++: Initialization In If And Switch Statements (C++17) Switch Statement With Initialization Modern C++: Inline Variables (C++17) Using Inline Variables Modern C++: Lambda Extensions (C++17) constexpr Lambdas Accessing The This Pointer In A Lambda Modern C++: Type Includes The Exception Spec (C++17) Modern C++: Empty Enum Initialization (C++17) Modern C++: Fold Expressions (C++17) Using Fold Expressions Handling Empty Parameter Packs Modern C++: string_view (C++17) string_view And Scope A string_view Anti-Pattern Modern C++: Initialization Of Aggregates (C++17) Zero Initialization Of Aggregates Modern C++: [[nodiscard]] Attribute (C++17) Modern C++: [[maybe_unused]] Attribute (C++17) Modern C++: __has_include Preprocessor Directive (C++17) Modern C++: The Spaceship Operator (C++20) Modern C++: consteval And constinit (C++20) constinit Variables constexpr try-catch Blocks Modern C++: Initializers In Range-Based Loops (C++20) Modern C++: Functions With auto Parameters (C++20) Modern C++: Non-Parameter Types In Templates (C++20) Modern C++: Virtual Constexpr Functions (C++20) Modern C++: Concepts (C++20) The Four Ways To Specify A Concept The Requires Clause Applying Concepts To The Return Type Of A Function Using More Than One Concept Writing A Custom Concept Constrain auto With Concepts Modern C++: Modules (C++20) The Structure Of A Module File Ways To Export Module Symbols Using Exported Module Symbols Module Interface Units And Module Implementation Units Sub-modules Module Partitions A Note On Templates Linkage Header Units Modern C++: Lambda Improvements (C++20) Allow lambda-capture [=, this] Modern C++: Designated Initialization (C++20) Modern C++: Using enum (C++20) Modern C++: Conversion From ptr To bool (C++20) Modern C++: boolalpha (C++20) Modern C++: [[no_unique_address]] (C++20) Modern C++: [[likely]] and [[unlikely]] (C++20) Modern C++: Coroutines (C++20) Introduction Why Is co_return Used Instead Of return? Coroutine Return Objects Instantiating A Coroutine Returning From A Coroutine Returning A Value From A Coroutine Suspending A Coroutine Resuming A Suspended Coroutine Passing Intermediate Values From A Suspended Coroutine Destroying A Coroutine Coroutine Restrictions Modern C++: #pragma once Header Management And Include Guards Why Does C And C++ Require Header Files Effective Header Management Forward Declarations Include Guards pragma once directive __has_include Preprocessor Directive C++ Standard Library: std::any C++ Standard Library: std::async, std::future std::async Launch Types Using std::promise C++ Standard Library: std::atomic C++ Standard Library: std::bind C++ Standard Library: std::chrono Clocks The std::ratio Class Template Durations Time Points System Time Computations Elapsed Time Calculation Put The Current Thread To Sleep Time In Seconds Since Unix Epoch C++ Standard Library: std::copy C++ Standard Library: std::format C++ Standard Library: std::function C++ Standard Library: std::initializer_list C++ Standard Library: std::map Insert A Key-Value Remove A Key-Value Test That A Map Has A Key Test That Map Has A Value C++ Standard Library: std::move C++ Standard Library: std::optional C++ Standard Library: std::reference_wrapper C++ Standard Library: std::sample C++ Standard Library: std::string C++20 String Interpolation C++17 String Interpolation erase find front Numeric To String replace starts_with and ends_with String To Integer Integer To String Substrings C++ Standard Library: std::swap C++ Standard Library: std::thread Basic Thread Creation Executing A Lamda Function In A Thread Executing A Non-Static Public Member Function In A Thread Executing A Static Member Function In A Thread Thread Joins Detaching A Thread From It’s Parent Thread Mutexes Locking Multiple Mutexes With std::lock() try_lock() Locking Multiple Mutexes With std::try_lock(m1, m2, ... mn) Timed Mutex Recursive Mutex Using std::lock_guard std::unique_lock Condition Variables Thread Local Storage C++ Standard Library: std::tuple Tuple Assignment Get Tuple Elements Tuple Concatenation Setting The Value Of A Tuple Element Tuple Type Traits std::pair C++ Standard Library: std::tie Memory Layout Of C And C++ Programs C++ GNU C++ Compiler Check The GNU C++ Compiler Version The Difference Between gcc and g++ g++ Semantics gcc and g++ Options The Compilation Process Creating Static And Shared Libraries Static And Shared Libraries Header File And Library Location Compiling And Linking A Static Library Creating A Static Library GCC Environment Variables Finding A Shared Library Setting The Shared Library Location With rpath Updating The Loader Config List The Shared Libraries Used By A Program C++ GDB Debugger Basic Debugging Command Completion Debugging An Already Running Process Setting A Breakpoint Saving Breakpoints Between Debugging Sessions Stepping Through A Program Stepping Out Of A Function Listing Program Statements Continuing The Debugging Session Restarting A Debugging Session Examining And Setting Variables Watching Variables Quit A Debugging Session The .gdbinit File Tracing Program Execution Debugging Core Dumps Debugging A Segmentation Fault SIGSEGV Signals GDB Errors C++ Sanitizers The Address Sanitizer (Asan) Undefined Behavior Sanitizer (UBSan) SonarLint C++ main Function Misc: How To Call A Function Before main Misc: Hide The Address Of An Object Misc: Inheritance And Composition C++ Glossary

قیمت نهایی

۴۰٬۰۰۰ تومان