|Important||This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer|
C++ Language Reference
This reference explains the C++ programming language as implemented in Microsoft C++. The organization is based on The Annotated C++ Reference Manual by Margaret Ellis and Bjarne Stroustrup and on the ANSI/ISO C++ International Standard (ISO/IEC FDIS 14882). Microsoft-specific implementations of C++ language features are included.
See the following tables to quickly find a keyword or operator:
In This Section
- Standard Compliance Issues in Visual C++
- Information about where Visual C++ does not agree with the C++ standard.
- Lexical Conventions
- Fundamental lexical elements of a C++ program: tokens, comments, operators, keywords, punctuators, literals. Also, file translation, operator precedence/associativity.
- Basic Concepts
- Scope, linkage, program startup and termination, storage classes, and types.
- Standard Conversions
- Type conversions between built-in, or "fundamental," types. Also, arithmetic conversions and conversions among pointer, reference, and pointer-to-member types.
- Types and semantics of expressions, reference topics on operators, casting and casting operators, run-time type information.
- Expression, null, compound, selection, iteration, jump, and declaration statements.
- Storage-class specifiers, function definitions, initializations, enumerations, class, struct, and union declarations, and typedef declarations. Also, inline functions, const keyword, namespaces.
- The portion of a declaration statement that names an object, type, or function. Abstract declarators, type names, initializers, function declarations and definitions, arrays, references.
- Classes, Structures, and Unions
- Introduction to classes, structures, and unions. Also, member functions, data members, bit fields, this pointer, nested classes.
- Derived Classes
- Single and multiple inheritance, virtual functions, multiple base classes, abstract classes, scope rules. Also, the __super and __interface keywords.
- Member-Access Control
- Controlling access to class members: public, private, and protected keywords. Friend functions and classes.
- Special Member Functions
- Special functions unique to class types: constructors, destructors, conversion functions, assignment operator, operator new and operator delete functions.
- Overloaded functions, declaration matching, argument matching. Also, overloaded operators, rules for operator overloading.
- Exception Handling
- C++ exception handling, structured exception handling (SEH), keywords used in writing exception handling statements.
- Template specifications, function templates, class templates, typename keyword, templates vs. macros, templates and smart pointers.
- Event Handling Keywords
- Keywords for declaring events and event handlers.
- Microsoft-Specific Modifiers
- Modifiers specific to Microsoft C++. Memory addressing, calling conventions, naked functions, extended storage-class attributes (__declspec), __w64.
- Inline Assembler
- Using assembly language and C++ in __asm blocks.
- Compiler Intrinsics
- _AddressOfReturnAddress, __assume, __debugbreak, __noop, _ReturnAddress. Also the intrinsics for MMX, Streaming SIMD Extensions (SSE), and Streaming SIMD Extensions 2.
- Compiler COM Support
- A reference to Microsoft-specific classes and global functions used to support COM types.
- Grammar Summary
- The C++ grammar with the Microsoft extensions.
- Managed Extensions for C++ Reference
- Reference material on Managed Extensions for C++.
- C/C++ Building Reference
- Compiler options, linker options, and other build tools.
- C/C++ Preprocessor Reference
- Reference material on pragmas, preprocessor directives, predefined macros, and the preprocessor.
- C Language Reference
- A reference to the C programming language, including Microsoft extensions.
- Visual C++ Libraries
- A list of links to the reference start pages for the various Visual C++ libraries.