Professional C++. 6 Ed

Professional C++. 6 Ed

Professional C++. 6 Ed
Автор: Gregoire Marc
Дата выхода: 2024
Издательство: John Wiley & Sons, Inc.
Количество страниц: 1983
Размер файла: 7.7 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

TABLE OF CONTENTS....2

TITLE PAGE....20

INTRODUCTION....21

WHO THIS BOOK IS FOR....23

WHAT THIS BOOK COVERS....24

HOW THIS BOOK IS STRUCTURED....26

CONVENTIONS....28

WHAT YOU NEED TO USE THIS BOOK....29

READER SUPPORT FOR THIS BOOK....34

NOTE....35

PART I: Introduction to Professional C++....36

1 A Crash Course in C++ and the Standard Library....37

C++ CRASH COURSE....37

YOUR FIRST BIGGER C++ PROGRAM....94

SUMMARY....102

EXERCISES....102

NOTE....103

2 Working with Strings and String Views....104

DYNAMIC STRINGS....105

FORMATTING AND PRINTING STRINGS....129

SUMMARY....150

EXERCISES....150

NOTES....152

3 Coding with Style....153

THE IMPORTANCE OF LOOKING GOOD....153

DOCUMENTING YOUR CODE....154

DECOMPOSITION....169

NAMING....173

USING LANGUAGE FEATURES WITH STYLE....178

FORMATTING....181

STYLISTIC CHALLENGES....185

SUMMARY....186

EXERCISES....187

NOTE....189

PART II: Professional C++ Software Design....190

4 Designing Professional C++ Programs....191

WHAT IS PROGRAMMING DESIGN?....191

THE IMPORTANCE OF PROGRAMMING DESIGN....192

DESIGNING FOR C++....195

TWO RULES FOR YOUR OWN C++ DESIGNS....196

REUSING EXISTING CODE....199

DESIGNING A CHESS PROGRAM....209

SUMMARY....216

EXERCISES....217

5 Designing with Classes....218

AM I THINKING PROCEDURALLY?....219

THE OBJECT-ORIENTED PHILOSOPHY....220

LIVING IN A WORLD OF CLASSES....225

CLASS RELATIONSHIPS....228

SUMMARY....247

EXERCISES....247

6 Designing for Reuse....250

THE REUSE PHILOSOPHY....251

HOW TO DESIGN REUSABLE CODE....252

SUMMARY....284

EXERCISES....285

NOTE....286

PART III: C++ Coding the Professional Way....287

7 Memory Management....289

WORKING WITH DYNAMIC MEMORY....290

ARRAY-POINTER DUALITY....312

LOW-LEVEL MEMORY OPERATIONS....316

COMMON MEMORY PITFALLS....320

SMART POINTERS....328

SUMMARY....347

EXERCISES....348

NOTES....349

8 Gaining Proficiency with Classes and Objects....350

INTRODUCING THE SPREADSHEET EXAMPLE....351

WRITING CLASSES....352

UNDERSTANDING OBJECT LIFE CYCLES....365

SUMMARY....401

EXERCISES....402

9 Mastering Classes and Objects....404

FRIENDS....405

DYNAMIC MEMORY ALLOCATION IN OBJECTS....407

MORE ABOUT MEMBER FUNCTIONS....442

CONSTEXPR AND CONSTEVAL....457

DIFFERENT KINDS OF DATA MEMBERS....462

NESTED CLASSES....469

ENUMERATIONS INSIDE CLASSES....471

OPERATOR OVERLOADING....472

BUILDING STABLE INTERFACES....488

SUMMARY....494

EXERCISES....495

NOTES....497

10 Discovering Inheritance Techniques....498

BUILDING CLASSES WITH INHERITANCE....499

INHERITANCE FOR REUSE....520

RESPECT YOUR PARENTS....525

INHERITANCE FOR POLYMORPHISM....536

MULTIPLE INHERITANCE....550

INTERESTING AND OBSCURE INHERITANCE ISSUES....556

CASTS....588

SUMMARY....595

EXERCISES....595

11 Modules, Header Files, and Miscellaneous Topics....597

MODULES....598

PREPROCESSOR DIRECTIVES....620

LINKAGE....625

HEADER FILES....629

FEATURE-TEST MACROS FOR CORE LANGUAGE FEATURES....633

THE STATIC KEYWORD....635

C-STYLE VARIABLE-LENGTH ARGUMENT LISTS....638

SUMMARY....641

EXERCISES....641

12 Writing Generic Code with Templates....643

OVERVIEW OF TEMPLATES....644

CLASS TEMPLATES....645

FUNCTION TEMPLATES....686

VARIABLE TEMPLATES....698

CONCEPTS....699

SUMMARY....716

EXERCISES....716

13 Demystifying C++ I/O....719

USING STREAMS....721

STRING STREAMS....746

SPAN-BASED STREAMS....749

FILE STREAMS....750

BIDIRECTIONAL I/O....758

FILESYSTEM SUPPORT LIBRARY....760

SUMMARY....764

EXERCISES....765

14 Handling Errors....767

ERRORS AND EXCEPTIONS....768

EXCEPTION MECHANICS....774

EXCEPTIONS AND POLYMORPHISM....790

RETHROWING EXCEPTIONS....801

STACK UNWINDING AND CLEANUP....803

SOURCE LOCATION....807

STACK TRACE....810

COMMON ERROR-HANDLING ISSUES....815

EXCEPTION SAFETY GUARANTEES....828

SUMMARY....829

EXERCISES....829

NOTE....831

15 Overloading C++ Operators....832

OVERVIEW OF OPERATOR OVERLOADING....833

OVERLOADING THE ARITHMETIC OPERATORS....844

OVERLOADING THE BITWISE AND BINARY LOGICAL OPERATORS....846

OVERLOADING THE INSERTION AND EXTRACTION OPERATORS....846

OVERLOADING THE SUBSCRIPTING OPERATOR....847

OVERLOADING THE FUNCTION CALL OPERATOR....854

OVERLOADING THE DEREFERENCING OPERATORS....856

WRITING CONVERSION OPERATORS....859

OVERLOADING THE MEMORY ALLOCATION AND DEALLOCATION OPERATORS....863

OVERLOADING USER-DEFINED LITERAL OPERATORS....869

SUMMARY....871

EXERCISES....872

16 Overview of the C++ Standard Library....873

CODING PRINCIPLES....874

OVERVIEW OF THE C++ STANDARD LIBRARY....874

SUMMARY....896

EXERCISES....896

17 Understanding Iterators and the Ranges Library....897

ITERATORS....898

STREAM ITERATORS....910

ITERATOR ADAPTERS....914

RANGES....921

SUMMARY....941

EXERCISES....942

NOTE....943

18 Standard Library Containers....944

CONTAINERS OVERVIEW....945

SEQUENTIAL CONTAINERS....950

SEQUENTIAL VIEWS....996

CONTAINER ADAPTERS....1002

ASSOCIATIVE CONTAINERS....1011

OTHER CONTAINERS....1047

SUMMARY....1057

EXERCISES....1058

19 Function Pointers, Function Objects, and Lambda Expressions....1060

FUNCTION POINTERS....1061

POINTERS TO MEMBER FUNCTIONS (AND DATA MEMBERS)....1067

FUNCTION OBJECTS....1069

POLYMORPHIC FUNCTION WRAPPERS....1082

LAMBDA EXPRESSIONS....1085

INVOKERS....1101

SUMMARY....1102

EXERCISES....1103

NOTE....1104

20 Mastering Standard Library Algorithms....1105

OVERVIEW OF ALGORITHMS....1106

ALGORITHM DETAILS....1113

SUMMARY....1149

EXERCISES....1150

21 String Localization and Regular Expressions....1152

LOCALIZATION....1153

REGULAR EXPRESSIONS....1168

SUMMARY....1196

EXERCISES....1197

22 Date and Time Utilities....1199

COMPILE-TIME RATIONAL NUMBERS....1199

DURATION....1202

CLOCK....1208

TIME POINT....1211

DATE....1213

TIME ZONE....1218

SUMMARY....1219

EXERCISES....1220

23 Random Number Facilities....1221

C-STYLE RANDOM NUMBER GENERATION....1222

RANDOM NUMBER ENGINES....1223

RANDOM NUMBER ENGINE ADAPTERS....1227

PREDEFINED ENGINES AND ENGINE ADAPTERS....1228

GENERATING RANDOM NUMBERS....1228

RANDOM NUMBER DISTRIBUTIONS....1231

SUMMARY....1236

EXERCISES....1237

24 Additional Vocabulary Types....1239

VARIANT....1240

ANY....1243

TUPLE....1245

OPTIONAL: MONADIC OPERATIONS....1253

EXPECTED....1255

SUMMARY....1260

EXERCISES....1261

PART IV: Mastering Advanced Features of C++....1263

25 Customizing and Extending the Standard Library....1264

ALLOCATORS....1265

EXTENDING THE STANDARD LIBRARY....1268

SUMMARY....1317

EXERCISES....1318

NOTE....1319

26 Advanced Templates....1320

MORE ABOUT TEMPLATE PARAMETERS....1320

CLASS TEMPLATE PARTIAL SPECIALIZATION....1327

EMULATING FUNCTION PARTIAL SPECIALIZATION WITH OVERLOADING....1331

TEMPLATE RECURSION....1333

VARIADIC TEMPLATES....1336

METAPROGRAMMING....1344

SUMMARY....1362

EXERCISES....1362

27 Multithreaded Programming with C++....1364

INTRODUCTION....1365

THREADS....1374

ATOMIC OPERATIONS LIBRARY....1389

MUTUAL EXCLUSION....1398

CONDITION VARIABLES....1416

LATCHES....1420

BARRIERS....1422

SEMAPHORES....1424

FUTURES....1426

EXAMPLE: MULTITHREADED LOGGER CLASS....1433

THREAD POOLS....1441

COROUTINES....1442

THREADING DESIGN AND BEST PRACTICES....1445

SUMMARY....1447

EXERCISES....1448

NOTES....1449

PART V: C++ Software Engineering....1451

28 Maximizing Software Engineering Methods....1452

THE NEED FOR PROCESS....1453

SOFTWARE LIFE CYCLE MODELS....1455

SOFTWARE ENGINEERING METHODOLOGIES....1465

BUILDING YOUR OWN PROCESS AND METHODOLOGY....1483

VERSION CONTROL....1484

SUMMARY....1488

EXERCISES....1488

29 Writing Efficient C++....1490

OVERVIEW OF PERFORMANCE AND EFFICIENCY....1491

LANGUAGE-LEVEL EFFICIENCY....1494

DESIGN-LEVEL EFFICIENCY....1502

PROFILING....1513

SUMMARY....1529

EXERCISES....1530

NOTES....1530

30 Becoming Adept at Testing....1532

QUALITY CONTROL....1533

UNIT TESTING....1536

FUZZ TESTING....1553

HIGHER-LEVEL TESTING....1553

TIPS FOR SUCCESSFUL TESTING....1556

SUMMARY....1557

EXERCISES....1557

NOTE....1558

31 Conquering Debugging....1559

THE FUNDAMENTAL LAW OF DEBUGGING....1560

BUG TAXONOMIES....1560

AVOID BUGS....1561

PLAN FOR BUGS....1563

DEBUGGING TECHNIQUES....1582

SUMMARY....1615

EXERCISES....1615

32 Incorporating Design Techniques and Frameworks....1618

“I CAN NEVER REMEMBER HOW TO…”....1620

THERE MUST BE A BETTER WAY....1629

OBJECT-ORIENTED FRAMEWORKS....1647

SUMMARY....1651

EXERCISES....1651

33 Applying Design Patterns....1653

THE STRATEGY PATTERN....1655

THE ABSTRACT FACTORY PATTERN....1658

THE FACTORY METHOD PATTERN....1663

OTHER FACTORY PATTERNS....1670

THE ADAPTER PATTERN....1672

THE PROXY PATTERN....1675

THE ITERATOR PATTERN....1678

THE OBSERVER PATTERN....1680

THE DECORATOR PATTERN....1684

THE CHAIN OF RESPONSIBILITY PATTERN....1689

THE SINGLETON PATTERN....1693

SUMMARY....1698

EXERCISES....1699

34 Developing Cross-Platform and Cross-Language Applications....1701

CROSS-PLATFORM DEVELOPMENT....1702

CROSS-LANGUAGE DEVELOPMENT....1714

SUMMARY....1737

EXERCISES....1738

NOTE....1739

PART VI: Appendices....1741

A: C++ Interviews....1742

CHAPTER 1: A CRASH COURSE IN C++ AND THE STANDARD LIBRARY....1743

CHAPTERS 2 AND 21: WORKING WITH STRINGS AND STRING VIEWS, AND STRING LOCALIZATION AND REGULAR EXPRESSIONS....1746

CHAPTER 3: CODING WITH STYLE....1749

CHAPTER 4: DESIGNING PROFESSIONAL C++ PROGRAMS....1751

CHAPTER 5: DESIGNING WITH CLASSES....1754

CHAPTER 6: DESIGNING FOR REUSE....1756

CHAPTER 7: MEMORY MANAGEMENT....1757

CHAPTERS 8 AND 9: GAINING PROFICIENCY WITH CLASSES AND OBJECTS, AND MASTERING CLASSES AND OBJECTS....1758

CHAPTER 10: DISCOVERING INHERITANCE TECHNIQUES....1763

CHAPTER 11: MODULES, HEADER FILES, AND MISCELLANEOUS TOPICS....1765

CHAPTERS 12 AND 26: WRITING GENERIC CODE WITH TEMPLATES, AND ADVANCED TEMPLATES....1766

CHAPTER 13: DEMYSTIFYING C++ I/O....1768

CHAPTER 14: HANDLING ERRORS....1769

CHAPTER 15: OVERLOADING C++ OPERATORS....1771

CHAPTERS 16–20 AND 25: THE STANDARD LIBRARY....1772

CHAPTER 22: DATE AND TIME UTILITIES....1775

CHAPTER 23: RANDOM NUMBER FACILITIES....1776

CHAPTER 24: ADDITIONAL VOCABULARY TYPES....1777

CHAPTER 27: MULTITHREADED PROGRAMMING WITH C++....1778

CHAPTER 28: MAXIMIZING SOFTWARE ENGINEERING METHODS....1780

CHAPTER 29: WRITING EFFICIENT C++....1782

CHAPTER 30: BECOMING ADEPT AT TESTING....1784

CHAPTER 31: CONQUERING DEBUGGING....1785

CHAPTER 32: INCORPORATING DESIGN TECHNIQUES AND FRAMEWORKS....1786

CHAPTER 33: APPLYING DESIGN PATTERNS....1787

CHAPTER 34: DEVELOPING CROSS-PLATFORM AND CROSS-LANGUAGE APPLICATIONS....1788

B: Annotated Bibliography....1789

C++....1789

UNIFIED MODELING LANGUAGE....1798

ALGORITHMS AND DATA STRUCTURES....1798

RANDOM NUMBERS....1799

OPEN-SOURCE SOFTWARE....1799

SOFTWARE ENGINEERING METHODOLOGY....1800

PROGRAMMING STYLE....1802

COMPUTER ARCHITECTURE....1804

EFFICIENCY....1804

TESTING....1804

DEBUGGING....1805

DESIGN PATTERNS....1806

OPERATING SYSTEMS....1807

MULTITHREADED PROGRAMMING....1807

C: Standard Library Header Files....1808

THE C STANDARD LIBRARY....1808

CONTAINERS....1812

ALGORITHMS, ITERATORS, RANGES, AND ALLOCATORS....1813

GENERAL UTILITIES....1815

MATHEMATICAL UTILITIES....1818

EXCEPTIONS....1819

I/O STREAMS....1819

THREADING SUPPORT LIBRARY....1821

D: Introduction to UML....1823

DIAGRAM TYPES....1823

CLASS DIAGRAMS....1824

INTERACTION DIAGRAMS....1828

INDEX....1831

COPYRIGHT....1978

DEDICATION....1979

ABOUT THE AUTHOR....1980

ABOUT THE TECHNICAL EDITORS....1981

ACKNOWLEDGMENTS....1982

END USER LICENSE AGREEMENT....1983

In the newly revised sixth edition of Professional C++, veteran software engineer and developer Marc Gregoire delivers yet another volume that raises the bar for advanced programming manuals. Covering almost all features of the new C++ standard codenamed C++23, the book offers case studies with working code that’s been tested on Windows and Linux.

As the leading resource for dedicated and knowledgeable professionals seeking to advance their C++ skills, this book provides resources that help readers:

  • Master new features of the latest standard, C++23
  • Maximize C++ capabilities with effective design solutions
  • Discover little-known elements and learn about pitfalls and what practices to avoid
  • Grasp testing and debugging best practices
  • Learn about tips and tricks for efficiency and performance

C++ is a complex language. Professional C++, 6th Edition, allows dedicated practitioners to remain current and abreast of the latest developments and advances.


Похожее:

Список отзывов:

Нет отзывов к книге.