Though the design of interfaces can affect the behavior, capabilities, stability, and ease of use of end-user applications, the techniques of API design are rarely taught. Instead, programmers most often gain these skills through experienceby making mistakes and learning empirically what does and does not work. API Design for C++ is the first and only book that distills the strategies for designing a good API, with a focus on large-scale long-term projects. Extensive C++ code accompanies each concept, illustrating the qualities that make a good API. Martin Reddy draws on over fifteen years of experience at Pixar and Linden Lab to offer in-depth discussions of documentation, testing, and the advanced topics of scripting and plug-in extensibility. Throughout, he focuses on various API styles and patterns that will allow programmers to produce interfaces that are easy to use and last for the long term.