{"product_id":"c-all-in-one-for-dummies-isbn-9781119601746","title":"C++ All-in-One For Dummies","description":"\u003cp\u003e\u003cb\u003eGet ready for C++20 with all you need to know for complete mastery!\u003c\/b\u003e \u003c\/p\u003e \u003cp\u003eYour comprehensive and updated guide to one of the world’s most popular programming languages is here! Whether you’re a novice or expert, you’ll find what you need to get going with the latest features of C++20. The workhorse of programming languages, C++ gives you the utmost control of data usage and interface and resource allocation. If your job involves data, proficiency in C++ means you’re indispensable!\u003c\/p\u003e \u003cp\u003eThis edition gives you 7 books in 1 for total C++ mastery. Inside, internationally renowned expert John Paul Mueller takes you from the fundamentals of working with objects and classes to writing applications that use paradigms not normally associated with C++, such as those used for functional programming strategies. The book also includes online resources such as source code. You discover how to use a C++ GNU compiler to build applications and even how to use your mobile device for coding.\u003c\/p\u003e \u003cul\u003e \u003cli\u003eConquer advanced programming and troubleshooting \u003c\/li\u003e \u003cli\u003eStreamline your code with lambda expressions\u003c\/li\u003e \u003cli\u003eUse C++ where you need it: for gaming, enterprise applications, and Web services\u003c\/li\u003e \u003cli\u003eUncover object secrets including the use of design patterns \u003c\/li\u003e \u003cli\u003eDiscover how to use functional programming techniques to make code concise and easy to read\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eIf you want to be your organization’s C++ guru, \u003ci\u003eC++ All-In-One for Dummies\u003c\/i\u003e is where it’s at!\u003c\/p\u003e \u003cp\u003e\u003cb\u003eIntroduction\u003c\/b\u003e\u003cb\u003e 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAbout This Book 1\u003c\/p\u003e \u003cp\u003eFoolish Assumptions 4\u003c\/p\u003e \u003cp\u003eIcons Used in This Book 4\u003c\/p\u003e \u003cp\u003eBeyond the Book 5\u003c\/p\u003e \u003cp\u003eWhere to Go from Here 6\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 1: Getting Started with C++ 7\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Configuring Your Desktop System\u003c\/b\u003e\u003cb\u003e 9\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eObtaining a Copy of C++ 20 10\u003c\/p\u003e \u003cp\u003eObtaining Code::Blocks 11\u003c\/p\u003e \u003cp\u003eInstalling Code::Blocks 12\u003c\/p\u003e \u003cp\u003eWorking with Windows 12\u003c\/p\u003e \u003cp\u003eWorking with Mac OS X 13\u003c\/p\u003e \u003cp\u003eUsing the standard Linux installation 14\u003c\/p\u003e \u003cp\u003eUsing the graphical Linux installation 15\u003c\/p\u003e \u003cp\u003eTouring the Essential Code::Blocks Features 17\u003c\/p\u003e \u003cp\u003eStarting Code::Blocks for the first time 18\u003c\/p\u003e \u003cp\u003eOpening the sample projects 19\u003c\/p\u003e \u003cp\u003eViewing the essential windows 20\u003c\/p\u003e \u003cp\u003eUsing Other IDEs 25\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Configuring Your Mobile System\u003c\/b\u003e\u003cb\u003e 27\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eObtaining CppDroid 28\u003c\/p\u003e \u003cp\u003eUnderstanding why CppDroid is such a great choice 29\u003c\/p\u003e \u003cp\u003eGetting your copy of CppDroid 31\u003c\/p\u003e \u003cp\u003eEnsuring you get a good install 32\u003c\/p\u003e \u003cp\u003eConsidering Other Alternatives 32\u003c\/p\u003e \u003cp\u003eWorking with C4Droid 33\u003c\/p\u003e \u003cp\u003eGetting multiple language support with AIDE 33\u003c\/p\u003e \u003cp\u003eUsing web-based IDEs 34\u003c\/p\u003e \u003cp\u003eTouring the Essential CppDroid Features 35\u003c\/p\u003e \u003cp\u003eGetting started with CppDroid 35\u003c\/p\u003e \u003cp\u003eAccessing an example 37\u003c\/p\u003e \u003cp\u003eWorking with a simple online project 37\u003c\/p\u003e \u003cp\u003eAccessing your source code 38\u003c\/p\u003e \u003cp\u003eConsidering differences with the desktop environment 39\u003c\/p\u003e \u003cp\u003eObtaining CppDroid Help 40\u003c\/p\u003e \u003cp\u003eWorking with the Help documentation 40\u003c\/p\u003e \u003cp\u003eGetting community support 41\u003c\/p\u003e \u003cp\u003eUsing the free examples 42\u003c\/p\u003e \u003cp\u003eAccessing the tutorials 43\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Creating Your First C++ Application\u003c\/b\u003e\u003cb\u003e 45\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCode::Blocks Creating a Project 46\u003c\/p\u003e \u003cp\u003eUnderstanding projects 46\u003c\/p\u003e \u003cp\u003eDefining your first project 47\u003c\/p\u003e \u003cp\u003eBuilding and executing your first application 52\u003c\/p\u003e \u003cp\u003eTyping the Code 53\u003c\/p\u003e \u003cp\u003eStarting with Main 55\u003c\/p\u003e \u003cp\u003eShowing Information 55\u003c\/p\u003e \u003cp\u003eDoing some math 60\u003c\/p\u003e \u003cp\u003eTabbing your output 66\u003c\/p\u003e \u003cp\u003eLet Your Application Run Away 67\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Storing Data in C++ \u003c\/b\u003e\u003cb\u003e69\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003ePutting Your Data Places: Variables 70\u003c\/p\u003e \u003cp\u003eCreating an integer variable 70\u003c\/p\u003e \u003cp\u003eDeclaring multiple variables 73\u003c\/p\u003e \u003cp\u003eChanging values 74\u003c\/p\u003e \u003cp\u003eSetting one variable equal to another 74\u003c\/p\u003e \u003cp\u003eInitializing a variable 75\u003c\/p\u003e \u003cp\u003eCreating a great name for yourself 76\u003c\/p\u003e \u003cp\u003eManipulating Integer Variables 78\u003c\/p\u003e \u003cp\u003eAdding integer variables 78\u003c\/p\u003e \u003cp\u003eSubtracting integer variables 82\u003c\/p\u003e \u003cp\u003eMultiplying integer variables 84\u003c\/p\u003e \u003cp\u003eDividing integer variables 86\u003c\/p\u003e \u003cp\u003eCharacters 88\u003c\/p\u003e \u003cp\u003eNull character 89\u003c\/p\u003e \u003cp\u003eNonprintable and other cool characters 89\u003c\/p\u003e \u003cp\u003eStrings 93\u003c\/p\u003e \u003cp\u003eGetting a part of a string 94\u003c\/p\u003e \u003cp\u003eChanging part of a string 95\u003c\/p\u003e \u003cp\u003eAdding onto a string 96\u003c\/p\u003e \u003cp\u003eAdding two strings 97\u003c\/p\u003e \u003cp\u003eMaking Decisions Using Conditional Operators 98\u003c\/p\u003e \u003cp\u003eTelling the Truth with Boolean Variables 100\u003c\/p\u003e \u003cp\u003eReading from the Console 102\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Directing the Application Flow\u003c\/b\u003e\u003cb\u003e 105\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDoing This or Doing That 106\u003c\/p\u003e \u003cp\u003eEvaluating Conditions in C++ 107\u003c\/p\u003e \u003cp\u003eFinding the right C++ operators 108\u003c\/p\u003e \u003cp\u003eCombining multiple evaluations 110\u003c\/p\u003e \u003cp\u003eIncluding Evaluations in C++ Conditional Statements 111\u003c\/p\u003e \u003cp\u003eDeciding what if and also what else 112\u003c\/p\u003e \u003cp\u003eGoing further with the else and if 113\u003c\/p\u003e \u003cp\u003eRepeating Actions with Statements That Loop 115\u003c\/p\u003e \u003cp\u003eUnderstanding how computers use loops 116\u003c\/p\u003e \u003cp\u003eLooping situations 116\u003c\/p\u003e \u003cp\u003eLooping for 117\u003c\/p\u003e \u003cp\u003ePerforming a simple for loop 118\u003c\/p\u003e \u003cp\u003eUsing multiple initialization variables 123\u003c\/p\u003e \u003cp\u003eWorking with ranges 126\u003c\/p\u003e \u003cp\u003ePlacing a condition within the declaration 128\u003c\/p\u003e \u003cp\u003eLetting C++ determine the type 129\u003c\/p\u003e \u003cp\u003eLooping while 130\u003c\/p\u003e \u003cp\u003eDoing while 132\u003c\/p\u003e \u003cp\u003eBreaking and continuing 133\u003c\/p\u003e \u003cp\u003eBreaking 134\u003c\/p\u003e \u003cp\u003eContinuing 135\u003c\/p\u003e \u003cp\u003eNesting loops 136\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: Dividing Your Work with Functions\u003c\/b\u003e\u003cb\u003e 139\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDividing Your Work 139\u003c\/p\u003e \u003cp\u003eCalling a Function 144\u003c\/p\u003e \u003cp\u003ePassing a variable 146\u003c\/p\u003e \u003cp\u003ePassing multiple variables 147\u003c\/p\u003e \u003cp\u003eWriting Your Own Functions 148\u003c\/p\u003e \u003cp\u003eDefining the AddOne() function 149\u003c\/p\u003e \u003cp\u003eSeeing how AddOne() is called 150\u003c\/p\u003e \u003cp\u003eTaking the AddOne() Function apart 150\u003c\/p\u003e \u003cp\u003eConsidering the AddOne() parameter 151\u003c\/p\u003e \u003cp\u003eUnderstanding the AddOne() name and type 152\u003c\/p\u003e \u003cp\u003eImproving On the Basic Function 153\u003c\/p\u003e \u003cp\u003eUsing multiple parameters or no parameters 153\u003c\/p\u003e \u003cp\u003eReturning nothing 156\u003c\/p\u003e \u003cp\u003eKeeping your variables local 157\u003c\/p\u003e \u003cp\u003eForward references and function prototypes 159\u003c\/p\u003e \u003cp\u003eWriting two versions of the same function 161\u003c\/p\u003e \u003cp\u003eCalling All String Functions 163\u003c\/p\u003e \u003cp\u003eInserting a string into a string 163\u003c\/p\u003e \u003cp\u003eRemoving parts of a string 164\u003c\/p\u003e \u003cp\u003eReplacing parts of a string 164\u003c\/p\u003e \u003cp\u003eUsing the string functions together 164\u003c\/p\u003e \u003cp\u003eUnderstanding main() 165\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7: Splitting Up Source Code Files\u003c\/b\u003e\u003cb\u003e 169\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCreating Multiple Source Files 170\u003c\/p\u003e \u003cp\u003eAdding a new source code file 170\u003c\/p\u003e \u003cp\u003eRemoving an existing source code file 173\u003c\/p\u003e \u003cp\u003eCreating a project with multiple existing files 173\u003c\/p\u003e \u003cp\u003eGetting multiple files to interact 177\u003c\/p\u003e \u003cp\u003eSharing with Header Files 179\u003c\/p\u003e \u003cp\u003eAdding the header only once 182\u003c\/p\u003e \u003cp\u003eUsing angle brackets or quotes 182\u003c\/p\u003e \u003cp\u003eSharing Variables among Source Files 183\u003c\/p\u003e \u003cp\u003eUsing the Mysterious Header Wrappers 185\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8: Referring to Your Data Through Pointers\u003c\/b\u003e\u003cb\u003e 187\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding the Changes in Pointers for C++ 20 188\u003c\/p\u003e \u003cp\u003eAvoiding broken code 188\u003c\/p\u003e \u003cp\u003eConsidering the issues 189\u003c\/p\u003e \u003cp\u003eWriting cleaner and less bug-prone code 191\u003c\/p\u003e \u003cp\u003eHeaping and Stacking the Variables 192\u003c\/p\u003e \u003cp\u003eGetting a variable’s address 196\u003c\/p\u003e \u003cp\u003eChanging a variable by using a pointer 198\u003c\/p\u003e \u003cp\u003ePointing at a string 200\u003c\/p\u003e \u003cp\u003ePointing to something else 203\u003c\/p\u003e \u003cp\u003eTips on pointer variables 204\u003c\/p\u003e \u003cp\u003eCreating New Raw Pointers 205\u003c\/p\u003e \u003cp\u003eUsing new 206\u003c\/p\u003e \u003cp\u003eUsing an initializer 208\u003c\/p\u003e \u003cp\u003eFreeing Raw Pointers 209\u003c\/p\u003e \u003cp\u003eWorking with Smart Pointers 211\u003c\/p\u003e \u003cp\u003eCreating smart pointers using std::unique_ptr and std::shared_ptr 212\u003c\/p\u003e \u003cp\u003eDefining nullable values using std::optional and std::nullopt 216\u003c\/p\u003e \u003cp\u003ePassing Pointer Variables to Functions 218\u003c\/p\u003e \u003cp\u003eReturning Pointer Variables from Functions 221\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart 2: Understanding Objects and Classes\u003c\/b\u003e\u003cb\u003e 225\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Working with Classes\u003c\/b\u003e\u003cb\u003e 227\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding Objects and Classes 227\u003c\/p\u003e \u003cp\u003eClassifying classes and objects 230\u003c\/p\u003e \u003cp\u003eDescribing methods and data 231\u003c\/p\u003e \u003cp\u003eImplementing a class 232\u003c\/p\u003e \u003cp\u003eSeparating method code 237\u003c\/p\u003e \u003cp\u003eThe parts of a class 240\u003c\/p\u003e \u003cp\u003eWorking with a Class 241\u003c\/p\u003e \u003cp\u003eAccessing members 241\u003c\/p\u003e \u003cp\u003eUsing classes and raw pointers 244\u003c\/p\u003e \u003cp\u003eUsing classes and smart pointers 248\u003c\/p\u003e \u003cp\u003ePassing objects to functions 249\u003c\/p\u003e \u003cp\u003eUsing const parameters in functions 251\u003c\/p\u003e \u003cp\u003eUsing the this pointer 252\u003c\/p\u003e \u003cp\u003eOverloading methods 256\u003c\/p\u003e \u003cp\u003eStarting and Ending with Constructors and Destructors 259\u003c\/p\u003e \u003cp\u003eStarting with constructors 259\u003c\/p\u003e \u003cp\u003eEnding with destructors 260\u003c\/p\u003e \u003cp\u003eSampling constructors and destructors 260\u003c\/p\u003e \u003cp\u003eAdding parameters to constructors 263\u003c\/p\u003e \u003cp\u003eBuilding Hierarchies of Classes 264\u003c\/p\u003e \u003cp\u003eCreating a hierarchy in C++ 265\u003c\/p\u003e \u003cp\u003eUnderstanding types of inheritance 266\u003c\/p\u003e \u003cp\u003eCreating and Using Object Aliases 267\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Using Advanced C++ Features\u003c\/b\u003e\u003cb\u003e 269\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eFilling Your Code with Comments 270\u003c\/p\u003e \u003cp\u003eConverting Types 272\u003c\/p\u003e \u003cp\u003eUnderstanding how int and string conversions work 272\u003c\/p\u003e \u003cp\u003eSeeing int and string conversions in action 273\u003c\/p\u003e \u003cp\u003eConsidering other conversion issues 276\u003c\/p\u003e \u003cp\u003eReading from the Console 277\u003c\/p\u003e \u003cp\u003eUnderstanding Preprocessor Directives 282\u003c\/p\u003e \u003cp\u003eUnderstanding the basics of preprocessing 282\u003c\/p\u003e \u003cp\u003eCreating constants and macros with #define 283\u003c\/p\u003e \u003cp\u003ePerforming conditional compilation 286\u003c\/p\u003e \u003cp\u003eExercising the basic preprocessor directives 288\u003c\/p\u003e \u003cp\u003eUsing Constants 292\u003c\/p\u003e \u003cp\u003eUsing Switch Statements 295\u003c\/p\u003e \u003cp\u003eSupercharging enums with Classes 298\u003c\/p\u003e \u003cp\u003eWorking with Random Numbers 300\u003c\/p\u003e \u003cp\u003eStoring Data in Arrays 302\u003c\/p\u003e \u003cp\u003eDeclaring and accessing an array 303\u003c\/p\u003e \u003cp\u003eArrays of pointers 304\u003c\/p\u003e \u003cp\u003ePassing arrays to functions 306\u003c\/p\u003e \u003cp\u003eAdding and subtracting pointers 307\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Planning and Building Objects\u003c\/b\u003e\u003cb\u003e 309\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRecognizing Objects 310\u003c\/p\u003e \u003cp\u003eObserving the Mailboxes class 312\u003c\/p\u003e \u003cp\u003eObserving the Mailbox class 314\u003c\/p\u003e \u003cp\u003eFinding other objects 315\u003c\/p\u003e \u003cp\u003eEncapsulating Objects 316\u003c\/p\u003e \u003cp\u003eConsidering the Application Programming Interface 316\u003c\/p\u003e \u003cp\u003eUnderstanding properties 316\u003c\/p\u003e \u003cp\u003eChoosing between private and protected 318\u003c\/p\u003e \u003cp\u003eDefining a process 318\u003c\/p\u003e \u003cp\u003eImplementing properties 319\u003c\/p\u003e \u003cp\u003eBuilding Hierarchies 322\u003c\/p\u003e \u003cp\u003eEstablishing a hierarchy 322\u003c\/p\u003e \u003cp\u003eProtecting members when inheriting 324\u003c\/p\u003e \u003cp\u003eOverriding methods 330\u003c\/p\u003e \u003cp\u003eSpecializing with polymorphism 332\u003c\/p\u003e \u003cp\u003eGetting abstract about things 333\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Building with Design Patterns\u003c\/b\u003e\u003cb\u003e 335\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDelving Into Pattern History 336\u003c\/p\u003e \u003cp\u003eIntroducing a Simple Pattern: the Singleton 337\u003c\/p\u003e \u003cp\u003eUsing an existing pattern 337\u003c\/p\u003e \u003cp\u003eCreating a singleton pattern class 338\u003c\/p\u003e \u003cp\u003eWatching an Instance with an Observer 341\u003c\/p\u003e \u003cp\u003eUnderstanding the observer pattern 341\u003c\/p\u003e \u003cp\u003eDefining an observer pattern class 343\u003c\/p\u003e \u003cp\u003eObservers and the Standard C++ Library 346\u003c\/p\u003e \u003cp\u003eAutomatically adding an observer 347\u003c\/p\u003e \u003cp\u003eMediating with a Pattern 349\u003c\/p\u003e \u003cp\u003eDefining the mediator pattern scenario 350\u003c\/p\u003e \u003cp\u003eOutlining the car example 351\u003c\/p\u003e \u003cp\u003eCreating the car example 354\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 3: Understanding Functional Programming 367\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Considering Functional Programming\u003c\/b\u003e\u003cb\u003e 369\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding How Functional Programming Differs 370\u003c\/p\u003e \u003cp\u003eDefining an Impure Language 373\u003c\/p\u003e \u003cp\u003eConsidering the requirements 373\u003c\/p\u003e \u003cp\u003eUnderstanding the C++ functional limitations 374\u003c\/p\u003e \u003cp\u003eSeeing Data as Immutable 375\u003c\/p\u003e \u003cp\u003eWorking with immutable variables 376\u003c\/p\u003e \u003cp\u003eWorking with immutability in classes and structures 377\u003c\/p\u003e \u003cp\u003eCreating constant expressions 378\u003c\/p\u003e \u003cp\u003eConsidering the Effects of State 381\u003c\/p\u003e \u003cp\u003eEliminating Side Effects 382\u003c\/p\u003e \u003cp\u003eContrasting declarations and functions 383\u003c\/p\u003e \u003cp\u003eAssociating functions with side effects 384\u003c\/p\u003e \u003cp\u003eRemoving side effects 385\u003c\/p\u003e \u003cp\u003eCreating a declarative C++ example 387\u003c\/p\u003e \u003cp\u003eUnderstanding the Role of auto 388\u003c\/p\u003e \u003cp\u003ePassing Functions to Functions 390\u003c\/p\u003e \u003cp\u003eSeeing a simple example of function input 391\u003c\/p\u003e \u003cp\u003eUsing transforms 393\u003c\/p\u003e \u003cp\u003eUsing Lambda Expressions for Implementation 394\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Working with Lambda Expressions\u003c\/b\u003e\u003cb\u003e 397\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCreating More Readable and Concise C++ Code 398\u003c\/p\u003e \u003cp\u003eDefining the Essential Lambda Expression 399\u003c\/p\u003e \u003cp\u003eDefining the parts of a lambda expression 399\u003c\/p\u003e \u003cp\u003eRelying on computer detection of return type 401\u003c\/p\u003e \u003cp\u003eUsing the auto keyword with lambda expressions 404\u003c\/p\u003e \u003cp\u003eUsing lambda expressions as macros 405\u003c\/p\u003e \u003cp\u003eDeveloping with Lambda Expressions 406\u003c\/p\u003e \u003cp\u003eUsing lambda expressions with classes and structures 407\u003c\/p\u003e \u003cp\u003eWorking with the capture clause 408\u003c\/p\u003e \u003cp\u003eSorting data using a lambda expression 411\u003c\/p\u003e \u003cp\u003eSpecifying that the lambda expression throws exceptions 413\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Advanced Lambda Expressions\u003c\/b\u003e\u003cb\u003e 415\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eConsidering the C++ 20 Lambda Extensions 416\u003c\/p\u003e \u003cp\u003eDefining an immediate function 416\u003c\/p\u003e \u003cp\u003eUsing = and this in captures 417\u003c\/p\u003e \u003cp\u003eFinding other changes 418\u003c\/p\u003e \u003cp\u003eWorking in Unevaluated Contexts 418\u003c\/p\u003e \u003cp\u003eUsing Assignable Stateless Lambda Expressions 420\u003c\/p\u003e \u003cp\u003eDealing with Pack Expansions 422\u003c\/p\u003e \u003cp\u003eConsidering the template 422\u003c\/p\u003e \u003cp\u003eProcessing the variables using recursion 423\u003c\/p\u003e \u003cp\u003eProcessing the variables using a lambda expression 424\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 4: Fixing Problems 427\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Dealing with Bugs \u003c\/b\u003e\u003cb\u003e429\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIt’s Not a Bug It’s a Feature! 430\u003c\/p\u003e \u003cp\u003eMake Your Application Features Look Like Features 431\u003c\/p\u003e \u003cp\u003eAnticipating (Almost) Everything 432\u003c\/p\u003e \u003cp\u003eConsidering menus 432\u003c\/p\u003e \u003cp\u003eDealing with textual input 435\u003c\/p\u003e \u003cp\u003ePerforming string processing 437\u003c\/p\u003e \u003cp\u003eAvoiding Mistakes, Plain and Simple 441\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Debugging an Application\u003c\/b\u003e\u003cb\u003e 443\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eProgramming with Debuggers 444\u003c\/p\u003e \u003cp\u003eRunning the debugger 446\u003c\/p\u003e \u003cp\u003eRecognizing the parts of the Code::Blocks debugger 453\u003c\/p\u003e \u003cp\u003eDebugging with Different Tools 455\u003c\/p\u003e \u003cp\u003eDebugging a Code::Blocks Application with Command-Line Arguments 456\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Stopping and Inspecting Your Code\u003c\/b\u003e\u003cb\u003e 457\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSetting and Disabling Breakpoints 458\u003c\/p\u003e \u003cp\u003eSetting a breakpoint in Code::Blocks 459\u003c\/p\u003e \u003cp\u003eEnabling and disabling breakpoints 460\u003c\/p\u003e \u003cp\u003eWatching, Inspecting, and Changing Variables 463\u003c\/p\u003e \u003cp\u003eWatching the variables 465\u003c\/p\u003e \u003cp\u003eChanging values 466\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Traveling About the Stack\u003c\/b\u003e\u003cb\u003e 469\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eStacking Your Data 470\u003c\/p\u003e \u003cp\u003eMoving about the stack 471\u003c\/p\u003e \u003cp\u003eStoring local variables 473\u003c\/p\u003e \u003cp\u003eDebugging with Advanced Features 475\u003c\/p\u003e \u003cp\u003eViewing threads 475\u003c\/p\u003e \u003cp\u003eTracing through assembly code 475\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 5: Advanced Programming 479\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Working with Arrays, Pointers, and References\u003c\/b\u003e\u003cb\u003e 481\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBuilding Up Arrays 482\u003c\/p\u003e \u003cp\u003eDeclaring arrays 482\u003c\/p\u003e \u003cp\u003eArrays and pointers 484\u003c\/p\u003e \u003cp\u003eUsing multidimensional arrays 488\u003c\/p\u003e \u003cp\u003eArrays and command-line parameters 492\u003c\/p\u003e \u003cp\u003eAllocating an array on the heap 494\u003c\/p\u003e \u003cp\u003eDeleting an array from the heap 494\u003c\/p\u003e \u003cp\u003eStoring arrays of pointers and arrays of arrays 495\u003c\/p\u003e \u003cp\u003eBuilding constant arrays 498\u003c\/p\u003e \u003cp\u003ePointing with Pointers 498\u003c\/p\u003e \u003cp\u003eBecoming horribly complex 499\u003c\/p\u003e \u003cp\u003ePointers to functions 505\u003c\/p\u003e \u003cp\u003ePointing a variable to a method 506\u003c\/p\u003e \u003cp\u003ePointing to static methods 509\u003c\/p\u003e \u003cp\u003eReferring to References 510\u003c\/p\u003e \u003cp\u003eReference variables 510\u003c\/p\u003e \u003cp\u003eReturning a reference from a function 511\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Creating Data Structures\u003c\/b\u003e\u003cb\u003e 515\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWorking with Data 515\u003c\/p\u003e \u003cp\u003eThe great variable roundup 516\u003c\/p\u003e \u003cp\u003eExpressing variables from either side 518\u003c\/p\u003e \u003cp\u003eCasting a spell on your data 520\u003c\/p\u003e \u003cp\u003eComparing casting and converting 521\u003c\/p\u003e \u003cp\u003eCasting safely with C++ 523\u003c\/p\u003e \u003cp\u003eStructuring Your Data 529\u003c\/p\u003e \u003cp\u003eStructures as component data types 531\u003c\/p\u003e \u003cp\u003eEquating structures 531\u003c\/p\u003e \u003cp\u003eReturning compound data types 532\u003c\/p\u003e \u003cp\u003eNaming Your Space 534\u003c\/p\u003e \u003cp\u003eCreating a namespace 534\u003c\/p\u003e \u003cp\u003eEmploying using namespace 535\u003c\/p\u003e \u003cp\u003eUsing variables 537\u003c\/p\u003e \u003cp\u003eUsing part of a namespace 538\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Constructors, Destructors, and Exceptions\u003c\/b\u003e\u003cb\u003e 541\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eConstructing and Destructing Objects 542\u003c\/p\u003e \u003cp\u003eOverloading constructors 542\u003c\/p\u003e \u003cp\u003eInitializing members 543\u003c\/p\u003e \u003cp\u003eAdding a default constructor 548\u003c\/p\u003e \u003cp\u003eFunctional constructors 550\u003c\/p\u003e \u003cp\u003eCalling one constructor from another 553\u003c\/p\u003e \u003cp\u003eCopying instances with copy constructors 555\u003c\/p\u003e \u003cp\u003eWhen constructors go bad 557\u003c\/p\u003e \u003cp\u003eDestroying your instances 558\u003c\/p\u003e \u003cp\u003eVirtually inheriting destructors 560\u003c\/p\u003e \u003cp\u003eProgramming the Exceptions to the Rule 563\u003c\/p\u003e \u003cp\u003eCreating a basic try catch block 563\u003c\/p\u003e \u003cp\u003eUsing multiple catch blocks 565\u003c\/p\u003e \u003cp\u003eThrowing direct instances 566\u003c\/p\u003e \u003cp\u003eCatching any exception 567\u003c\/p\u003e \u003cp\u003eRethrowing an exception 568\u003c\/p\u003e \u003cp\u003eUsing a standard category 570\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Advanced Class Usage\u003c\/b\u003e\u003cb\u003e 571\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eInherently Inheriting Correctly 572\u003c\/p\u003e \u003cp\u003eMorphing your inheritance 572\u003c\/p\u003e \u003cp\u003eAvoiding polymorphism 573\u003c\/p\u003e \u003cp\u003eAdjusting access 574\u003c\/p\u003e \u003cp\u003eAvoiding variable naming conflicts 575\u003c\/p\u003e \u003cp\u003eUsing class-based access adjustment 576\u003c\/p\u003e \u003cp\u003eReturning something different, virtually speaking 577\u003c\/p\u003e \u003cp\u003eMultiple inheritance 581\u003c\/p\u003e \u003cp\u003eVirtual inheritance 584\u003c\/p\u003e \u003cp\u003eFriend classes and functions 588\u003c\/p\u003e \u003cp\u003eUsing Classes and Types within Classes 591\u003c\/p\u003e \u003cp\u003eNesting a class 591\u003c\/p\u003e \u003cp\u003eTypes within classes 597\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Creating Classes with Templates\u003c\/b\u003e\u003cb\u003e 601\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eTemplatizing a Class 602\u003c\/p\u003e \u003cp\u003eConsidering types 602\u003c\/p\u003e \u003cp\u003eDefining the need for templates 602\u003c\/p\u003e \u003cp\u003eCreating and using a template 605\u003c\/p\u003e \u003cp\u003eUnderstanding the template keyword 607\u003c\/p\u003e \u003cp\u003eGoing Beyond the Basics 609\u003c\/p\u003e \u003cp\u003eSeparating a template from the function code 609\u003c\/p\u003e \u003cp\u003eIncluding static members in a template 611\u003c\/p\u003e \u003cp\u003eParameterizing a Template 612\u003c\/p\u003e \u003cp\u003ePutting different types in the parameter 613\u003c\/p\u003e \u003cp\u003eIncluding multiple parameters 616\u003c\/p\u003e \u003cp\u003eWorking with non-type parameters 619\u003c\/p\u003e \u003cp\u003eTypedefing a Template 622\u003c\/p\u003e \u003cp\u003eDeriving Templates 623\u003c\/p\u003e \u003cp\u003eDeriving classes from a class template 623\u003c\/p\u003e \u003cp\u003eDeriving a class template from a class 626\u003c\/p\u003e \u003cp\u003eDeriving a class template from a class template 627\u003c\/p\u003e \u003cp\u003eTemplatizing a Function 630\u003c\/p\u003e \u003cp\u003eOverloading and function templates 632\u003c\/p\u003e \u003cp\u003eTemplatizing a method 635\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: Programming with the Standard Library \u003c\/b\u003e\u003cb\u003e637\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eArchitecting the Standard Library 638\u003c\/p\u003e \u003cp\u003eContaining Your Classes 638\u003c\/p\u003e \u003cp\u003eStoring in a vector 639\u003c\/p\u003e \u003cp\u003eWorking with std::array 642\u003c\/p\u003e \u003cp\u003eMapping your data 643\u003c\/p\u003e \u003cp\u003eContaining instances, pointers, or references 644\u003c\/p\u003e \u003cp\u003eWorking with copies 648\u003c\/p\u003e \u003cp\u003eComparing instances 649\u003c\/p\u003e \u003cp\u003eIterating through a container 655\u003c\/p\u003e \u003cp\u003eA map of pairs in your hand 658\u003c\/p\u003e \u003cp\u003eThe Great Container Showdown 658\u003c\/p\u003e \u003cp\u003eAssociating and storing with a set 658\u003c\/p\u003e \u003cp\u003eUnionizing and intersecting sets 662\u003c\/p\u003e \u003cp\u003eListing with list 664\u003c\/p\u003e \u003cp\u003eStacking the deque 669\u003c\/p\u003e \u003cp\u003eWaiting in line with stacks and queues 670\u003c\/p\u003e \u003cp\u003eCopying Containers 673\u003c\/p\u003e \u003cp\u003eCreating and Using Dynamic Arrays 675\u003c\/p\u003e \u003cp\u003eWorking with Unordered Data 677\u003c\/p\u003e \u003cp\u003eUsing std::unordered_set to create an unordered set 677\u003c\/p\u003e \u003cp\u003eManipulating unordered sets 677\u003c\/p\u003e \u003cp\u003eWorking with Ranges 679\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 6: Reading and Writing Files 681\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Filing Information with the Streams Library\u003c\/b\u003e\u003cb\u003e 683\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSeeing a Need for Streams 684\u003c\/p\u003e \u003cp\u003eProgramming with the Streams Library 686\u003c\/p\u003e \u003cp\u003eGetting the right header file 686\u003c\/p\u003e \u003cp\u003eOpening a file 687\u003c\/p\u003e \u003cp\u003eReading from a file 690\u003c\/p\u003e \u003cp\u003eReading and writing a file 691\u003c\/p\u003e \u003cp\u003eWorking with containers 692\u003c\/p\u003e \u003cp\u003eHandling Errors When Opening a File 693\u003c\/p\u003e \u003cp\u003eFlagging the ios Flags 695\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Writing with Output Streams\u003c\/b\u003e\u003cb\u003e 697\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eInserting with the \u0026lt;\u0026lt; Operator 698\u003c\/p\u003e \u003cp\u003eFormatting Your Output 699\u003c\/p\u003e \u003cp\u003eFormatting with flags 700\u003c\/p\u003e \u003cp\u003eSpecifying a precision 704\u003c\/p\u003e \u003cp\u003eSetting the width and creating fields 707\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Reading with Input Streams\u003c\/b\u003e\u003cb\u003e 711\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eExtracting with Operators 712\u003c\/p\u003e \u003cp\u003eEncountering the End of File 715\u003c\/p\u003e \u003cp\u003eUsing the record count approach 715\u003c\/p\u003e \u003cp\u003eUsing the EOF check approach 718\u003c\/p\u003e \u003cp\u003eReading Various Types 720\u003c\/p\u003e \u003cp\u003eUnderstanding data reading issues 720\u003c\/p\u003e \u003cp\u003eWriting and reading string-type data 721\u003c\/p\u003e \u003cp\u003eWriting and reading structured data 724\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Building Directories and Contents \u003c\/b\u003e\u003cb\u003e727\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eManipulating Directories 728\u003c\/p\u003e \u003cp\u003eCreating a directory 728\u003c\/p\u003e \u003cp\u003eDeleting a directory 730\u003c\/p\u003e \u003cp\u003eGetting the Contents of a Directory 731\u003c\/p\u003e \u003cp\u003eCopying Files 733\u003c\/p\u003e \u003cp\u003eCopying with windows 734\u003c\/p\u003e \u003cp\u003eUsing the quick-and-dirty method 734\u003c\/p\u003e \u003cp\u003eMoving and Renaming Files and Directories 735\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Streaming Your Own Classes\u003c\/b\u003e\u003cb\u003e 737\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eStreaming a Class for Text Formatting 738\u003c\/p\u003e \u003cp\u003eUnderstanding the process 739\u003c\/p\u003e \u003cp\u003eConsidering the insertion implementation 739\u003c\/p\u003e \u003cp\u003eConsidering the extraction implementation 741\u003c\/p\u003e \u003cp\u003eManipulating a Stream 742\u003c\/p\u003e \u003cp\u003eWhat’s a manipulator? 742\u003c\/p\u003e \u003cp\u003eWriting your own manipulator 744\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 7: Advanced Standard Library Usage 751\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Exploring the Standard Library Further\u003c\/b\u003e\u003cb\u003e 753\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eConsidering the Standard Library Categories 755\u003c\/p\u003e \u003cp\u003eAlgorithms 755\u003c\/p\u003e \u003cp\u003eAtomic operations 757\u003c\/p\u003e \u003cp\u003eC Compatibility 759\u003c\/p\u003e \u003cp\u003eConcepts 759\u003c\/p\u003e \u003cp\u003eContainers 760\u003c\/p\u003e \u003cp\u003eCoroutines 760\u003c\/p\u003e \u003cp\u003eFilesystem 761\u003c\/p\u003e \u003cp\u003eInput\/Output 761\u003c\/p\u003e \u003cp\u003eIterators 761\u003c\/p\u003e \u003cp\u003eLocalization 763\u003c\/p\u003e \u003cp\u003eNumerics 763\u003c\/p\u003e \u003cp\u003eRanges 764\u003c\/p\u003e \u003cp\u003eRegular Expressions 766\u003c\/p\u003e \u003cp\u003eStrings 766\u003c\/p\u003e \u003cp\u003eThread Support 767\u003c\/p\u003e \u003cp\u003eUtilities 767\u003c\/p\u003e \u003cp\u003eParsing Strings Using a Hash 768\u003c\/p\u003e \u003cp\u003eObtaining Information Using a Random Access Iterator 771\u003c\/p\u003e \u003cp\u003eLocating Values Using the Find Algorithm 774\u003c\/p\u003e \u003cp\u003eUsing the Random Number Generator 776\u003c\/p\u003e \u003cp\u003eWorking with Temporary Buffers 777\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Working with User-Defined Literals (UDLs)\u003c\/b\u003e\u003cb\u003e 779\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding the Need for UDLs 780\u003c\/p\u003e \u003cp\u003ePrefixes and suffixes 781\u003c\/p\u003e \u003cp\u003eDifferentiating between raw and cooked 784\u003c\/p\u003e \u003cp\u003eWorking with the UDLs in the Standard Library 785\u003c\/p\u003e \u003cp\u003estd::basic_string 785\u003c\/p\u003e \u003cp\u003estd::complex 788\u003c\/p\u003e \u003cp\u003estd::chrono::duration 789\u003c\/p\u003e \u003cp\u003eCreating Your Own UDLs 791\u003c\/p\u003e \u003cp\u003eDeveloping a conversion UDL 792\u003c\/p\u003e \u003cp\u003eDeveloping a custom type UDL 793\u003c\/p\u003e \u003cp\u003eUsing a custom UDL for side effects 794\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Building Original Templates\u003c\/b\u003e\u003cb\u003e 795\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDeciding When to Create a Template 796\u003c\/p\u003e \u003cp\u003eDefining the Elements of a Good Template 797\u003c\/p\u003e \u003cp\u003eCreating a Basic Math Template 799\u003c\/p\u003e \u003cp\u003eBuilding a Structure Template 801\u003c\/p\u003e \u003cp\u003eDeveloping a Class Template 804\u003c\/p\u003e \u003cp\u003eConsidering Template Specialization 807\u003c\/p\u003e \u003cp\u003eCreating a Template Library 809\u003c\/p\u003e \u003cp\u003eDefining the library project 810\u003c\/p\u003e \u003cp\u003eConfiguring the library project 812\u003c\/p\u003e \u003cp\u003eCoding the library 813\u003c\/p\u003e \u003cp\u003eUsing Your Template Library 815\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Investigating Boost\u003c\/b\u003e\u003cb\u003e 817\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eConsidering the Standard Library Alternative 818\u003c\/p\u003e \u003cp\u003eUnderstanding why the Standard Library contains Boost features 818\u003c\/p\u003e \u003cp\u003eDefining the trade-offs of using the Standard Library 819\u003c\/p\u003e \u003cp\u003eUnderstanding Boost 820\u003c\/p\u003e \u003cp\u003eBoost features 821\u003c\/p\u003e \u003cp\u003eLicensing 822\u003c\/p\u003e \u003cp\u003ePaid support 823\u003c\/p\u003e \u003cp\u003eObtaining and Installing Boost for Code::Blocks 823\u003c\/p\u003e \u003cp\u003eUnpacking Boost 823\u003c\/p\u003e \u003cp\u003eUsing the header-only libraries 825\u003c\/p\u003e \u003cp\u003eBuilding the libraries 825\u003c\/p\u003e \u003cp\u003eTesting the installation 827\u003c\/p\u003e \u003cp\u003eCreating the Boost Tools 833\u003c\/p\u003e \u003cp\u003eUsing Boost.Build 836\u003c\/p\u003e \u003cp\u003eGetting a successful build 836\u003c\/p\u003e \u003cp\u003eCreating your own example 836\u003c\/p\u003e \u003cp\u003eUsing Inspect 837\u003c\/p\u003e \u003cp\u003eUnderstanding BoostBook 840\u003c\/p\u003e \u003cp\u003eUsing QuickBook 841\u003c\/p\u003e \u003cp\u003eUsing bcp 843\u003c\/p\u003e \u003cp\u003eUsing Wave 845\u003c\/p\u003e \u003cp\u003eBuilding Your First Boost Application Using Date Time 846\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Boosting up a Step\u003c\/b\u003e\u003cb\u003e 849\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eParsing Strings Using RegEx 850\u003c\/p\u003e \u003cp\u003eAdding the RegEx library 851\u003c\/p\u003e \u003cp\u003eCreating the RegEx code 855\u003c\/p\u003e \u003cp\u003eBreaking Strings into Tokens Using Tokenizer 857\u003c\/p\u003e \u003cp\u003ePerforming Numeric Conversion 858\u003c\/p\u003e \u003cp\u003eCreating Improved Loops Using Foreach 862\u003c\/p\u003e \u003cp\u003eAccessing the Operating System Using Filesystem 864\u003c\/p\u003e \u003cp\u003eIndex 869\u003c\/p\u003e  \u003cp\u003e\u003cb\u003eJohn Paul Mueller\u003c\/b\u003e has produced 116 books and more than 600 articles on a range of topics that include functional programming techniques, application devel- opment using C++, and machine learning methodologies.   \u003c\/p\u003e\u003cp\u003e\u003cb\u003eYour guide to C++ proficiency\u003c\/b\u003e  \u003c\/p\u003e\u003cp\u003eYour comprehensive guide to one of the world's most popular programming languages is here! Whether you're an expert or a novice, you'll find everything you needfrom the fundamentals of working with objects and classes to writing applications for functional programming strategies. This edition includes all of the C++ 20 updates you've been waiting for, plus a great deal more, such as techniques to streamline your code. It even shows how to develop C++ code on your mobile device. If you want to be your organization's C++ guru, this is where it's at! \u003c\/p\u003e\u003cp\u003e\u003cb\u003e7 Books Inside…\u003c\/b\u003e \u003c\/p\u003e\u003cul\u003e \u003cli\u003eGetting Started with C++\u003c\/li\u003e \u003cli\u003eUnderstanding Objects and Classes\u003c\/li\u003e \u003cli\u003eUnderstanding Functional Programming\u003c\/li\u003e \u003cli\u003eFixing Problems\u003c\/li\u003e \u003cli\u003eAdvanced Programming\u003c\/li\u003e \u003cli\u003eReading and Writing Files\u003c\/li\u003e \u003cli\u003eAdvanced Standard Library Usage\u003c\/li\u003e \u003c\/ul\u003e","brand":"For Dummies","offers":[{"title":"Default Title","offer_id":47988875854053,"sku":"NP9781119601746","price":44.99,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9781119601746.jpg?v=1761781875","url":"https:\/\/k12savings.com\/es\/products\/c-all-in-one-for-dummies-isbn-9781119601746","provider":"K12savings","version":"1.0","type":"link"}