Bjarne Stroustrup0201889544, 9780201889543
About a third of the information in the second edition of this book came from the first. This third edition is the result of a rewrite of even larger magnitude. It offers something to even the most experienced C++ programmer at the same time, this book is easier for the novice to approach than its predecessors were. The explosion of C++ use and the massive amount of experience accumulated as a result makes this possible.
Contents:
Introductory Material
Basic Facilities
Abstraction Mechanisms
The Standard Library
Design Using C++
Appendices
Table of contents :
The C++ Programming Language (Special 3rd Edition)……Page 1
Title……Page 2
Copyright……Page 3
Contents……Page 4
Preface……Page 6
Preface to the Second Edition……Page 8
Preface to the First Edition……Page 10
Part 0: Introduction……Page 12
1.8 Advice……Page 0
2.1 What is C++?……Page 32
2.2 Programming Paradigms……Page 33
2.3 Procedural Programming……Page 34
2.4 Modular Programming……Page 37
2.5 Data Abstraction……Page 41
2.6 Object Oriented Programming……Page 48
2.7 Generic Programming……Page 51
2.9 Advice……Page 54
3.1 Introduction……Page 56
3.3 The Standard Library Namespace……Page 57
3.4 Output……Page 58
3.5 Strings……Page 59
3.6 Input……Page 61
3.7 Containers……Page 63
3.8 Algorithms……Page 67
3.9 Math……Page 75
3.11 Advice……Page 77
Part I: Basic Facilities……Page 78
4.1 Types……Page 80
4.3 Character Types……Page 82
4.4 Integer Types……Page 84
4.6 Sizes……Page 85
4.8 Enumerations……Page 87
4.9 Declarations……Page 89
4.11 Exercises……Page 96
5.1 Pointers……Page 98
5.2 Arrays……Page 99
5.3 Pointers into Arrays……Page 102
5.4 Constants……Page 105
5.5 References……Page 108
5.6 Pointer to Void……Page 111
5.7 Structures……Page 112
5.8 Advice……Page 115
6.1 A Desk Calculator……Page 118
6.2 Operator Summary……Page 130
6.3 Statement Summary……Page 143
6.4 Comments and Indentation……Page 149
6.5 Advice……Page 150
7.1 Function Declarations……Page 154
7.2 Argument Passing……Page 156
7.3 Value Return……Page 159
7.4 Overloaded Function Names……Page 160
7.5 Default Arguments……Page 164
7.6 Unspecified Number of Arguments……Page 165
7.7 Pointer to Function……Page 167
7.8 Macros……Page 171
7.10 Exercises……Page 174
8.1 Modularization and Interfaces……Page 176
8.2 Namespaces……Page 178
8.3 Exceptions……Page 197
8.5 Exercises……Page 205
9.1 Separate Compilation……Page 208
9.2 Linkage……Page 209
9.3 Using Header Files……Page 219
9.4 Programs……Page 228
9.6 Exercises……Page 230
Part II: Abstraction Mechanisms……Page 232
10.1 Introduction……Page 234
10.2 Classes……Page 235
10.3 Efficient User Defined Types……Page 247
10.4 Objects……Page 253
10.5 Advice……Page 268
11.1 Introduction……Page 272
11.2 Operator Functions……Page 273
11.3 A Complex Number Type……Page 278
11.4 Conversion Operators……Page 286
11.5 Friends……Page 289
11.6 Large Objects……Page 293
11.7 Essential Operators……Page 294
11.8 Subscripting……Page 297
11.9 Function Call……Page 298
11.10 Dereferencing……Page 300
11.11 Increment and Decrement……Page 302
11.12 A String Class……Page 303
11.13 Advice……Page 308
11.14 Exercises……Page 309
12.1 Introduction……Page 312
12.2 Derived Classes……Page 313
12.3 Abstract Classes……Page 324
12.4 Design of Class Hierarchies……Page 325
12.6 Advice……Page 335
12.7 Exercises……Page 336
13.1 Introduction……Page 338
13.2 A Simple String Template……Page 339
13.3 Function Templates……Page 345
13.4 Using Template Arguments to Specify Policy……Page 349
13.5 Specialization……Page 352
13.6 Derivation and Templates……Page 356
13.7 Source Code Organization……Page 361
13.8 Advice……Page 363
13.9 Exercises……Page 364
14.1 Error Handling……Page 366
14.2 Grouping of Exceptions……Page 369
14.3 Catching Exceptions……Page 372
14.4 Resource Management……Page 375
14.5 Exceptions That Are Not Errors……Page 385
14.6 Exception Specifications……Page 386
14.7 Uncaught Exceptions……Page 391
14.8 Exceptions and Efficiency……Page 392
14.9 Error Handling Alternatives……Page 394
14.10 Standard Exceptions……Page 395
14.11 Advice……Page 397
14.12 Exercises……Page 398
15.1 Introduction and Overview……Page 400
15.2 Multiple Inheritance……Page 401
15.3 Access Control……Page 413
15.4 Run Time Type Information……Page 418
15.5 Pointers to Members……Page 429
15.6 Free Store……Page 432
15.8 Exercises……Page 436
Part III: The Standard Library……Page 438
16.1 Standard Library Design……Page 440
16.2 Container Design……Page 445
16.3 Vector……Page 453
16.5 Exercises……Page 470
17.1 Standard Containers……Page 472
17.2 Sequences……Page 480
17.3 Sequence Adapters……Page 486
17.4 Associative Containers……Page 491
17.5 Almost Containers……Page 502
17.6 Defining a New Container……Page 508
17.8 Exercises……Page 515
18.1 Introduction……Page 518
18.2 Overview of Standard Library Algorithms……Page 519
18.3 Sequences and Containers……Page 523
18.4 Function Objects……Page 525
18.5 Nonmodifying Sequence Algorithms……Page 534
18.6 Modifying Sequence Algorithms……Page 540
18.7 Sorted Sequences……Page 550
18.8 Heaps……Page 554
18.9 Min and Max……Page 555
18.10 Permutations……Page 556
18.12 Advice……Page 557
18.13 Exercises……Page 558
19.1 Introduction……Page 560
19.2 Iterators and Sequences……Page 561
19.3 Checked Iterators……Page 572
19.4 Allocators……Page 578
19.5 Advice……Page 588
19.6 Exercises……Page 589
20.1 Introduction……Page 590
20.2 Characters……Page 591
20.3 Basic_string……Page 593
20.4 The C Standard Library……Page 610
20.5 Advice……Page 612
20.6 Exercises……Page 613
21.1 Introduction……Page 616
21.2 Output……Page 618
21.3 Input……Page 624
21.4 Formatting……Page 636
21.5 File Streams and String Streams……Page 648
21.6 Buffering……Page 653
21.7 Locale……Page 660
21.8 C Input/Output……Page 662
21.9 Advice……Page 665
21.10 Exercises……Page 666
22.1 Introduction……Page 668
22.2 Numeric Limits……Page 669
22.3 Standard Mathematical Functions……Page 671
22.4 Vector Arithmetic……Page 673
22.5 Complex Arithmetic……Page 690
22.6 Generalized Numeric Algorithms……Page 693
22.7 Random Numbers……Page 696
22.8 Advice……Page 697
22.9 Exercises……Page 698
Part IV: Design Using C++……Page 700
23.1 Overview……Page 702
23.2 Introduction……Page 703
23.3 Aims and Means……Page 705
23.4 The Development Process……Page 707
23.5 Management……Page 724
23.6 Annotated Bibliography……Page 730
23.7 Advice……Page 732
24.1 Overview……Page 734
24.2 Design and Programming Language……Page 735
24.3 Classes……Page 743
24.4 Components……Page 766
24.5 Advice……Page 774
25.1 Kinds of Classes……Page 776
25.2 Concrete Types……Page 777
25.3 Abstract Types……Page 780
25.4 Node Classes……Page 783
25.5 Actions……Page 787
25.6 Interface Classes……Page 789
25.7 Handle Classes……Page 793
25.8 Application Frameworks……Page 797
25.10 Exercises……Page 799
Appendices and Index……Page 802
A.2 Keywords……Page 804
A.3 Lexical Conventions……Page 805
A.5 Expressions……Page 809
A.6 Statements……Page 813
A.7 Declarations……Page 814
A.8 Classes……Page 819
A.9 Templates……Page 822
A.10 Exception Handling……Page 823
A.11 Preprocessing Directives……Page 824
B.1 Introduction……Page 826
B.2 C/C++ Compatibility……Page 827
B.3 Coping with Older C++ Implementations……Page 831
C.2 The Standard……Page 838
C.3 Character Sets……Page 840
C.4 Types of Integer Literals……Page 843
C.6 Implicit Type Conversion……Page 844
C.7 Multidimensional Arrays……Page 847
C.8 Saving Space……Page 851
C.9 Memory Management……Page 854
C.10 Namespaces……Page 858
C.11 Access Control……Page 860
C.12 Pointers to Data Members……Page 864
C.13 Templates……Page 865
C.14 Advice……Page 878
D.1 Handling Cultural Differences……Page 880
D.1.1 Programming Cultural Differences……Page 881
D.2 The locale Class……Page 884
D.2.1 Named Locales……Page 885
D.2.1.1 Constructing New Locales……Page 888
D.2.2 Copying and Comparing Locales……Page 889
D.2.3 The global() and the classic() Locales……Page 890
D.3 Facets……Page 891
D.3.1 Accessing Facets in a Locale……Page 893
D.3.2 A Simple User-Defined Facet……Page 894
D.3.3 Uses of Locales and Facets……Page 897
D.4 Standard Facets……Page 898
D.4.1 String Comparison……Page 900
D.4.2 Numeric Input and Output……Page 903
D.4.2.1 Numeric Punctuation……Page 904
D.4.2.2 Numeric Output……Page 905
D.4.2.3 Numeric Input……Page 908
D.4.3 Input and Output of Monetary Values……Page 909
D.4.3.1 Money Punctuation……Page 910
D.4.3.2 Money Output……Page 913
D.4.3.3 Money Input……Page 914
D.4.4 Date and Time Input and Output……Page 915
D.4.4.1 Clocks and Timers……Page 916
D.4.4.2 A Date Class……Page 918
D.4.4.3 Date and Time Output……Page 919
D.4.4.4 Date and Time Input……Page 921
D.4.4.5 A More Flexible Date Class……Page 924
D.4.4.6 Specifying a Date Format……Page 925
D.4.4.7 A Date Input Facet……Page 927
D.4.5 Character Classification……Page 931
D.4.5.1 Convenience Interfaces……Page 935
D.4.6 Character Code Conversion……Page 936
D.4.7 Messages……Page 939
D.4.7.1 Using Messages from Other Facets……Page 942
D.5 Advice……Page 943
E.1 Introduction……Page 945
E.2 Exception Safety……Page 946
E.3.1 A Simple Vector……Page 950
E.3.2 Representing Memory Explicitly……Page 953
E.3.3 Assignment……Page 955
E.3.4 push_ back()……Page 957
E.3.5 Constructors and Invariants……Page 959
E.3.5.1 Using init() Functions……Page 960
E.3.5.2 Relying on a Default Valid State……Page 961
E.4 Standard Container Guarantees……Page 963
E.4.1 Insertion and Removal of Elements……Page 965
E.4.2 Guarantees and Tradeoffs……Page 967
E.4.4 Initialization and Iterators……Page 970
E.4.5 References to Elements……Page 971
E.5 The Rest of the Standard Library……Page 972
E.5.3 Algorithms……Page 973
E.5.5 The C Standard Library……Page 974
E.6 Implications for Library Users……Page 975
E.8 Exercises……Page 977
Index……Page 979
Reviews
There are no reviews yet.