INTERNATIONAL ISO/IEC STANDARD 14882 Second edition 2D03.1015 Programming languages-C++ Langages de progremmation-C++ Adoptod by INCIT8 (nterNational Commltoe for Imformation Technology Standarda)as an American Nationel Standard. Date of ANSI Approva:12/292003 Publishod by Amnrican National Standards Insthute. 25 West 43rd Street,New York New York 10036 Copyright 2003 by Information Technology Industry Council OTI). All rights reserved. These materials are subject to copyright claims of Intemational Standardization Organization (ISO).Inlemnstional Electrotechncal Commssion (EC).American Natonl Standards Institute (ANSI),and inomation Technology Industry Council (I).Not for resale.No part of this pubicstion may be reproduced in any form,induding an eledtronic retrieval system,without the pror written pemmission of IT.Al requests pertaning to this standard should be submted to ITl,1250 Eye Street NW, Washington,DC 20006. Printed in the United Stales of America ISO IEC Refarence number 1S0MEG148822003(目 ISOMEC 2003
BC Reference number ISO/IEC 14882:2003(E) INTERNATIONAL STANDARD ISO/IEC 14882 Second edition 2003-10-15 Programming languages — C++ Langages de programmation — C++ Adopted by INCITS (InterNational Committee for Information Technology Standards) as an American National Standard. Date of ANSI Approval: 12/29/2003 Published by American National Standards Institute, 25 West 43rd Street, New York, New York 10036 Copyright 2003 by Information Technology Industry Council (ITI). All rights reserved. These materials are subject to copyright claims of International Standardization Organization (ISO), International Electrotechnical Commission (IEC), American National Standards Institute (ANSI), and Information Technology Industry Council (ITI). Not for resale. No part of this publication may be reproduced in any form, including an electronic retrieval system, without the prior written permission of ITI. All requests pertaining to this standard should be submitted to ITI, 1250 Eye Street NW, Washington, DC 20005. Printed in the United States of America
1S01EC14882:2003(E) Contents I Gereral 1.1 Scope..... 1.2 Normative references. 1.3 Terms and defiritions. 1.3.1 argument......... 1.32 dap0 she messap买 133 dynamic type. 2 1.34 ill-formed program 2 135 mplementaton-defined behavor 136 implementation limits. 137 locale-specific behavior 2 1.3.8 multibyte character.... 1.3.9 parameter 1.3.10 signature........ 444335* 2 13.11 i加ype 1.3.12 urdefined behavice.... 2 13.13 urspecified behavioc..... 13.14 well-formed program..... 1.4 Implementation compliance. 15 Stnucture of this Internotional Standard .4 1.6 Symtax notation 17 The C++memory model 1.8 The Cl abject model. 1.9 Program executicn 10NFC2083一AMig4swd 带
ISO/IEC 14882:2003(E) © ISO/IEC 2003 — All rights reserved iii Contents 1 General ........................................................................................................................................................1 1.1 Scope........................................................................................................................................................1 1.2 Normative references ...............................................................................................................................1 1.3 Terms and definitions .........................................................................................................................................1 1.3.1 argument ...............................................................................................................................................1 1.3.2 diagnostic message ...............................................................................................................................2 1.3.3 dynamic type .........................................................................................................................................2 1.3.4 ill-formed program................................................................................................................................2 1.3.5 implementation-defined behavior .........................................................................................................2 1.3.6 implementation limits ...........................................................................................................................2 1.3.7 locale-specific behavior ........................................................................................................................2 1.3.8 multibyte character ...............................................................................................................................2 1.3.9 parameter ..............................................................................................................................................2 1.3.10 signature ..............................................................................................................................................2 1.3.11 static type ............................................................................................................................................2 1.3.12 undefined behavior .............................................................................................................................2 1.3.13 unspecified behavior ...........................................................................................................................3 1.3.14 well-formed program ..........................................................................................................................3 1.4 Implementation compliance.....................................................................................................................3 1.5 Structure of this International Standard ...................................................................................................4 1.6 Syntax notation ........................................................................................................................................4 1.7 The C + + memory model ...........................................................................................................................4 1.8 The C + + object model ..............................................................................................................................4 1.9 Program execution ...................................................................................................................................5
1S01EC148822003(E) 1.10 Acknowledgments 2 Lexical conventions.. 9 2.1 Phases of translation 9 2.2 Character sets. 10 23Trg写hque85 2.4 Preprocessing tokens ,11 2.5 Ahemative tokens.. 12 2.6 Tokents 12 2.7 Comments........ 2.8 Header names. 13 2.9 Preprocessing numbers. 13 2.10 Identifiers... 13 2.11 Keywords. .14 2.12 Operators and punctuators 2.13 Literals 2.13.I Integer literals.. .15 2.13.2 Character literals ,16 2.13.3 Floating litcrals .18 2.13.4 String lierals... .19 2.13.5 Boolean literals .19 3 Basic concepts..... 21 3.1 Declarations and definitions. 21 3.2 One definition rule. 22 3.3 Declarative regions and scopes 24 3.3.1 Point of declaration 25 3.3.2 Local scope....... 26 3.3.3 Function procotype scope 26 3.3.4 Function scope.. 27 3.3.5 Namespace scope 27 3.3.6 Class scope..... 27 3.3.7 Name hiding 444444444444444444444444444 28 3.4 Name lookup.... 9 3.4.1 Ungusalified name lookup 29 3.4.2 Argument-dependent name lookup. .32 3.4.3 Qulified name lookup .34 SOEC 2003-Al rights neserved
ISO/IEC 14882:2003(E) iv © ISO/IEC 2003 — All rights reserved 1.10 Acknowledgments .................................................................................................................................8 2 Lexical conventions ....................................................................................................................................9 2.1 Phases of translation ................................................................................................................................9 2.2 Character sets .........................................................................................................................................10 2.3 Trigraph sequences ................................................................................................................................11 2.4 Preprocessing tokens .............................................................................................................................11 2.5 Alternative tokens ..................................................................................................................................12 2.6 Tokens....................................................................................................................................................12 2.7 Comments ..............................................................................................................................................12 2.8 Header names .........................................................................................................................................13 2.9 Preprocessing numbers ..........................................................................................................................13 2.10 Identifiers .............................................................................................................................................13 2.11 Keywords .............................................................................................................................................14 2.12 Operators and punctuators ...................................................................................................................15 2.13 Literals .................................................................................................................................................15 2.13.1 Integer literals ...................................................................................................................................15 2.13.2 Character literals ...............................................................................................................................16 2.13.3 Floating literals .................................................................................................................................18 2.13.4 String literals .....................................................................................................................................19 2.13.5 Boolean literals .................................................................................................................................19 3 Basic concepts ..........................................................................................................................................21 3.1 Declarations and definitions ..................................................................................................................21 3.2 One definition rule .................................................................................................................................22 3.3 Declarative regions and scopes ..............................................................................................................24 3.3.1 Point of declaration .............................................................................................................................25 3.3.2 Local scope .........................................................................................................................................26 3.3.3 Function prototype scope ....................................................................................................................26 3.3.4 Function scope ....................................................................................................................................27 3.3.5 Namespace scope ................................................................................................................................27 3.3.6 Class scope..........................................................................................................................................27 3.3.7 Name hiding........................................................................................................................................28 3.4 Name lookup ..........................................................................................................................................29 3.4.1 Unqualified name lookup ...................................................................................................................29 3.4.2 Argument-dependent name lookup .....................................................................................................32 3.4.3 Qualified name lookup .......................................................................................................................34
IS01EC14882:2003(目 3.43.】Cas8mem6rs 35 3.432 Namespace members. 35 3.4.4 Elaborated type specifiers 39 345 Clacss memtber aceess 40 3.4.6 Using-directives and namespoce aliases 41 35 Progran and linkage 4 3.6 Start and termination. 43 36.1 Main function 43 3.6 2 Initialization of non-local objects...... 4 563 Temmination 45 37S1 orage d国0n 46 3.7.1 Static storage duration.. 6 3.7 2 Automatic storage duration 46 3.73 Dynammic sorage duration. 7 373.】Allocation functi0s. 7 3.7.3 2 Deallocation functions 48 3.74 Duration of sub-objects 4移 3.8 Object Lifetime. 49 39Ty05. 51 3.9.1 Fundamental types 53 592 Compound types 55 3.9 3 CV-qualifiers 55 3.10 Lvalues and rvalues.. 4 Standard conversions.. 59 4.1 Lvalue-to-rvalue conversio....... .59 42 Array-to-pointer conversion .60 4.3 Function-to-pointer conversion .60 4.4 Qualification comversions. 0 4.5 Integral promotions 61 4.6 Floating point promotion. 61 4.7 Integral cooversions.. 6位 4.8 Floating point comversions 62 4.9 Floating-imegral conversions 2 4.10 Pointer comversions.. 62 4.11 Pointer to member conversions. 63 。50EC2003-Mg修eserved
ISO/IEC 14882:2003(E) © ISO/IEC 2003 — All rights reserved v 3.4.3.1 Class members .................................................................................................................................35 3.4.3.2 Namespace members .......................................................................................................................35 3.4.4 Elaborated type specifiers ...................................................................................................................39 3.4.5 Class member access ..........................................................................................................................40 3.4.6 Using-directives and namespace aliases .............................................................................................41 3.5 Program and linkage ..............................................................................................................................41 3.6 Start and termination..............................................................................................................................43 3.6.1 Main function......................................................................................................................................43 3.6.2 Initialization of non-local objects .......................................................................................................44 3.6.3 Termination.........................................................................................................................................45 3.7 Storage duration .....................................................................................................................................46 3.7.1 Static storage duration ........................................................................................................................46 3.7.2 Automatic storage duration.................................................................................................................46 3.7.3 Dynamic storage duration ...................................................................................................................47 3.7.3.1 Allocation functions.........................................................................................................................47 3.7.3.2 Deallocation functions .....................................................................................................................48 3.7.4 Duration of sub-objects.......................................................................................................................48 3.8 Object Lifetime ......................................................................................................................................49 3.9 Types......................................................................................................................................................52 3.9.1 Fundamental types ..............................................................................................................................53 3.9.2 Compound types .................................................................................................................................55 3.9.3 CV-qualifiers ......................................................................................................................................55 3.10 Lvalues and rvalues .............................................................................................................................56 4 Standard conversions ................................................................................................................................59 4.1 Lvalue-to-rvalue conversion ..................................................................................................................59 4.2 Array-to-pointer conversion ..................................................................................................................60 4.3 Function-to-pointer conversion .............................................................................................................60 4.4 Qualification conversions ......................................................................................................................60 4.5 Integral promotions ................................................................................................................................61 4.6 Floating point promotion .......................................................................................................................61 4.7 Integral conversions ...............................................................................................................................62 4.8 Floating point conversions .....................................................................................................................62 4.9 Floating-integral conversions ................................................................................................................62 4.10 Pointer conversions ..............................................................................................................................62 4.11 Pointer to member conversions ...........................................................................................................63
IS01EC148822003E) 4.12 Boolean conversions 63 5 Expressicns..... 65 5.1 Primary expressions 66 5.2 Poostfi expressions 68 5.2.1 Subscripting 68 5.2.2 Function call 68 52.3 Explicit type conversion (functional notation) 70 5.24 Pseudo destructor call 70 52.5 Class member access 70 5.2.6 Inerement and decrement 71 5.2.7 Dynamic cast 72 528 Type identification. 5.2.9 Static cast...... 7 5.2.10 Reinterpret cast 52.11 Const c城. 76 5.3 Unary expressions. 净 5.3.1 Unary operators. 78 5.3.2 Increment and decrement 79 5.3.3S20of 79 5.3.4New 8 5.3.5 Delete 83 5.4 Explicit type conversion (cast notation) 84 5.5 Pointer-to-member operators. .85 5.6 Multiplicative operatoes 85 5.7 Additive operators 86 5.8 Shift operators....... 87 5.9 Relational operators. 87 5.10 Equality operators 88 5.11 Bitwise AND operator 89 5.12 Bitwise exclusive OR operafor 5.13 Batwise inclusive OR operator 89 5.14 Logical AND operator 89 5.15 Logical OR operator. 90 5.16 Conditional operator. 90 5.17 Assignment operators 91 ISOEC0a如一相htws4ned
ISO/IEC 14882:2003(E) vi © ISO/IEC 2003 — All rights reserved 4.12 Boolean conversions ............................................................................................................................63 5 Expressions ...............................................................................................................................................65 5.1 Primary expressions ...............................................................................................................................66 5.2 Postfix expressions ................................................................................................................................68 5.2.1 Subscripting ........................................................................................................................................68 5.2.2 Function call .......................................................................................................................................68 5.2.3 Explicit type conversion (functional notation) ...................................................................................70 5.2.4 Pseudo destructor call .........................................................................................................................70 5.2.5 Class member access ..........................................................................................................................70 5.2.6 Increment and decrement ....................................................................................................................71 5.2.7 Dynamic cast ......................................................................................................................................72 5.2.8 Type identification ..............................................................................................................................73 5.2.9 Static cast ............................................................................................................................................74 5.2.10 Reinterpret cast .................................................................................................................................75 5.2.11 Const cast ..........................................................................................................................................76 5.3 Unary expressions ..................................................................................................................................78 5.3.1 Unary operators...................................................................................................................................78 5.3.2 Increment and decrement ....................................................................................................................79 5.3.3 Sizeof ..................................................................................................................................................79 5.3.4 New .....................................................................................................................................................80 5.3.5 Delete ..................................................................................................................................................83 5.4 Explicit type conversion (cast notation) ................................................................................................84 5.5 Pointer-to-member operators .................................................................................................................85 5.6 Multiplicative operators .........................................................................................................................85 5.7 Additive operators .................................................................................................................................86 5.8 Shift operators ........................................................................................................................................87 5.9 Relational operators ...............................................................................................................................87 5.10 Equality operators ................................................................................................................................88 5.11 Bitwise AND operator ..........................................................................................................................89 5.12 Bitwise exclusive OR operator .............................................................................................................89 5.13 Bitwise inclusive OR operator .............................................................................................................89 5.14 Logical AND operator ..........................................................................................................................89 5.15 Logical OR operator .............................................................................................................................90 5.16 Conditional operator ............................................................................................................................90 5.17 Assignment operators ..........................................................................................................................91