Discover everything you need to know about C++ in a logical progression of small lessons that you can work through as quickly or as slowly as you need. This book divides C++ up into bite-sized chunks that will help you learn the language one step at a time. Fully updated to include C++20, it assumes no familiarity with C++ or any other C-based language.
Exploring C++20 acknowledges that C++ can be a complicated language, so rather than baffle you with complex chapters explaining functions, classes, and statements in isolation yoüll focus on how to achieve results. By learning a little bit of this and a little of that yoüll soon have amassed enough knowledge to be writing non-trivial programs and will have built a solid foundation of experience that puts those previously baffling concepts into context.
In this fully-revised third edition of Exploring C++, yoüll learn how to use the standard library early in the book. Next, yoüll work with operators, objects, and data-sources in increasingly realistic situations. Finally, yoüll start putting the pieces together to create sophisticated programs of your own design confident that yoüve built a firm base of experience from which to grow.
What You Will Learn Grasp the basics, including compound statements, modules, and more
Work with custom types and see how to use them Write useful algorithms, functions, and more
Discover the latest C++ 20 features, including concepts, modules, and ranges
Apply your skills to projects that include a fixed-point numbers and body-mass index applications
Carry out generic programming and apply it in a practical project Exploit multiple inheritance, traits/policies, overloaded functions, and metaprogramming
Who This Book Is ForExperienced programmers who may have little or no experience with C++ who want an accelerated learning guide to C++20 so they can hit the ground running.
Ray Lischner has a bachelor's degree in computer science from Caltech and a master's in computer science from Oregon State University. He worked as a software developer for a dozen years, at big and small companies across the US, using PL/I, C, C++, Delphi, Smalltalk, and various assembly languages on both large and small systems. He has been self-employed as a consultant, trainer, and author for the last ten years. Ray taught computer science at Oregon State University for several years and specialized in teaching introductory computer programming. He taught courses in C and C++ and software engineering.
Part I: The Basics.-1. Honing your tools.- 2. Reading C++ Code.- 3. Integer Expressions.- 4. Strings.- 5. Simple Input.- 6. Error Messages.- 7. For Loops.- 8. Formatted Output.- 9. Arrays and Vectors.- 10. Algorithms and Ranges.- 11. Increment and Decrement.- 12. Conditions and Logic.- 13. Compound Statements.- 14. Introduction to File I/O.- 15. The Map Data Structure.- 16. Type Synonyms.- 17. Characters.- 18. Character Categories.- 19. Case-Folding.- 20. Writing Functions.- 21. Function Arguments.- 22. Using Ranges.- 23. Using Iterators.- 24. Unnamed Functioins.- 25. Overloading Function Names.- 26. Big and Little Numbers.- 27. Very Big and Very Little Numbers.- 28. Documentation.- 29. Project 1: Body-Mass IndexPart II: Custom Types.- 30. Custom Types.- 31. Overloading Operators.- 32. Custom I/O Operators.- 33. Assignmentand Initialization.- 34. Writing Classes.- 35. More About Member Functions.- 36. Access Levels.- 37. Understanding Object-Oriented Programming.- 38. Inheritance.- 39. Virtual Functions.- 40. Classes and Types.- 41. Declarations and Definitions.- 42. Modules.- 43. Old-Fashioned "Modules".- 44. Function Objects.- 45. Useful Algorithms.- 46. More About Iterators.- 47. Ranges, Views and Adaptors.- 48. Exceptions.- 49. More Operators.- 50. Project 2: Fixed-Point Numbers.- Part III: Generic Programming.- 51. Function Templates.- 52. Class Templates.- 53. Template Specialization.- 54. Partial Template Specialization.- 55. Template Constraints.- 56. Names and Namespaces.- 57. Containers.- 58. Locales and Facets.- 59. International Characters.- 60. TextI/O.- 61. Project3: Currency Type.- Part IV: Real Programming.- 62. Pointers.- 63. Regular Expressions.- 64. Moving Data with Rvalue References.- 65. Smart Pointers.- 66. Files and File Names.- 67. Working with Bits.- 68. Enumerations.- 69. Multiple Inheritance.- 70. Concepts, Traits and Policies.- 71. Names, Namespaces, and Templates.- 72. Overloaded Functions and Operators.- 73. Programming at Compile Time.- 74. Project 4: Calculator.