GradeFocus
BooksCategoriesAuthorsAboutContact
GradeFocus

Find textbooks and academic resources at competitive prices. Compare listings from VitalSource, Amazon, and more to save money on your course materials.

Browse

  • Books
  • Categories
  • Authors

Company

  • About
  • Contact
  • FAQ

Legal

  • Privacy
  • Terms
  • DMCA

© 2026 GradeFocus. All rights reserved.

PrivacyTermsSitemap
  1. Home
  2. /Software Engineering
API Design for C++ cover

API Design for C++

by Martin Reddy

2nd Edition

Publisher: Morgan Kaufmann

(0 reviews)
Software Engineering

Compare Prices

VitalSourceLifetime Access$89.95AmazonKindle$64.09Best PriceeTextShelfPDF$38.00

Book Details

Print ISBN9780443222191
eText ISBN9780443222207
PublisherMorgan Kaufmann
Publishing Year2024
Edition2nd Edition
LanguageEnglish
Pages648

API Design for C++, 2nd Edition, by Martin Reddy, provides thorough instruction on library interface creation and C++ programming. Targeted at senior undergraduate students, graduate students, software engineers, and academic or industry Computer Science researchers, this publication establishes methods for building reliable software interfaces. It details core structural strategies necessary for developing maintainable codebases in professional settings.

The coverage spans the complete API lifecycle, progressing from initial design and implementation to documentation, testing, release, versioning, ongoing maintenance, and deprecation. Across these stages, the book addresses key technical themes including interface design, plug-in extensibility, scripting interfaces, and performance optimization.

To support applied learning, the text includes functional code examples with working source code available online for experimentation. This practical orientation makes the work a strong fit for upper-level Computer Science and software engineering courses focused on component architecture and software design.

Table of Contents

  1. Chapter 1: Introduction

    • • What Are APIs?
    • • What's Different about API Design?
    • • Why Should You Use APIs?
    • • When Should You Avoid APIs?
    • • API Examples
    • • File Formats and Network Protocols
    • • About This Book
  2. Chapter 2: Qualities

    • • Model the Problem Domain
    • • Hide Implementation Details
    • • Minimally Complete
    • • Easy to Use
    • • Loosely coupled
    • • Stable, Documented, and Tested
  3. Chapter 3: Patterns

    • • Pimpl Idiom
    • • Singleton
    • • Factory Methods
    • • API Wrapping Patterns
    • • Observer Pattern
  4. Chapter 4: Design

    • • A Case for Good Design
    • • Gathering Functional Requirements
    • • Creating Use Cases
    • • Elements of API Design
    • • Architecture Design
    • • Class Design
    • • Function Design
  5. Chapter 5: Styles

    • • Flat C APIs
    • • Object-Oriented C++ APIs
    • • Template-Based APIs
    • • Data-Driven APIs
  6. Chapter 6: C++ Usage

    • • Namespaces
    • • Constructors and Assignment
    • • Const Correctness
    • • Templates
    • • Operator Overloading
    • • Function Parameters
    • • Avoid #define for Constants
    • • Avoid Using Friends
    • • Exporting Symbols
    • • Coding Conventions
  7. Chapter 7: C++ Revisions

    • • Which C++ Revision to Use
    • • C++11 API Features
    • • Smart Pointers
    • • Explicit Member Functions
    • • Explicit Overrides and Final
    • • Enum Classes
    • • Function Objects
    • • Tuples
    • • Hash Tables
    • • Constant Expressions
    • • Null pointer constant
    • • Type aliases with using
    • • Unicode String Literals
    • • C++14 API Features
    • • The deprecated Attribute
    • • More Relaxed Const Expressions
    • • Binary Literals and Digit Separators
    • • C++17 API Features
    • • Nested Namespace Definitions
    • • Inline Variables
    • • Check for Header Availability
    • • Function Exception Specifications
    • • String Views
    • • Optionals
    • • Any Type
    • • Variant Container
    • • Byte Type
    • • C++20 API Features
    • • Modules
    • • Template Constraints and Concepts
    • • The Spaceship Operator
    • • The consteval Specifier
    • • Coroutines
    • • Version Header
    • • C++23 API Features
    • • Conditional Preprocessor Directives
    • • Multidimensional Subscript Operator
    • • Expected Values
  8. Chapter 8: Performance

    • • Pass Input Arguments by Const Reference
    • • Minimize #include Dependencies
    • • Declaring Constants
    • • Initialization Lists
    • • Memory Optimization
    • • Don't Inline Until You Need To
    • • Copy on Write
    • • Iterating over Elements
    • • Performance Analysis
  9. Chapter 9: Concurrency

    • • Thread Safety
    • • Avoiding Global Data
    • • Returning Data by Value
    • • The Use of static
    • • Initialization of Data
    • • Mutex Locking for Data Access
    • • Using Async Functions
    • • Promises and Futures
    • • Producer Consumer API
  10. Chapter 10: Versioning

    • • Version Numbers
    • • Software Branching Strategies
    • • Life Cycle of an API
    • • Levels of Compatibility
    • • How to Maintain Backward Compatibility
    • • API Reviews
  11. Chapter 11: Documentation

    • • Reasons to Write Documentation
    • • Types of Documentation
    • • Documentation Usability
    • • Inclusive Language
    • • Using Doxygen
  12. Chapter 12: Testing

    • • Reasons to Write Tests
    • • Types of API Testing
    • • Writing Good Tests
    • • Writing Testable Code
    • • Automated Testing Tools
  13. Chapter 13: Objective C++ and Swift

    • • Using Objective C++ within a C++ API
    • • Objective C++ wrapper for C++ API
    • • Using os_log and signposts
    • • Accessing an Objective C++ API in Swift
  14. Chapter 14: Scripting

    • • Adding Script Bindings
    • • Script Wrapping Technologies
    • • Adding Python Bindings with Boost Python
    • • Adding Ruby Bindings with SWIG
  15. Chapter 15: Extensibility

    • • Extending via Plugins
    • • Extending via Inheritance
    • • Extending via Templates

Customer Reviews

0.0

0 reviews

5 stars
0
4 stars
0
3 stars
0
2 stars
0
1 stars
0

No reviews yet. Be the first to review this book!

Write a Review

Select rating

0/20 characters minimum

By submitting a review, you agree that it may be published after moderation.

Reviewed by GradeFocus Editorial Team

▶Research Sources (14)
  • API Design for C++ - 2nd Edition - Elsevier Shop
  • API Design for C++ [2 ed.] 0443222193, 9780443222191 ...
  • Appendix A: Libraries - API Design for C++, 2nd Edition [Book]
  • API Design for C++ - Martin Reddy (9780443222207) » Bokkilden
  • API Design for C++ | Martin Reddy | 2. Auflage | 2024
  • API Design for C++ - DOKUMEN.PUB
  • 12. Testing - API Design for C++, 2nd Edition [Book] - O'Reilly
  • Please verify you are human - Captcha
  • API Design for C++ - ScienceDirect.com
  • Opinions on API Design for C++ Book by Martin Reddy? - Reddit
  • Modern C++ API Design [2019 Class Archive] - CppCon
  • API Design for C++ by Martin Reddy - Boomerang Books
  • Back to Basics: C++ API Design - Jason Turner - CppCon 2022
  • C++ API Design - Medium

Related Books

Kubernetes: Up and Running

Kubernetes: Up and Running

Brendan Burns

Head First Java

Head First Java

Kathy Sierra

Software Engineering

Software Engineering

Ian Sommerville

Taking Testing Seriously

Taking Testing Seriously

James Bach

Blockchain Application Security

Blockchain Application Security

Marco Morana

The UX Book

The UX Book

Rex Hartson