Mastering BorlandC++ 4.5 Second Edition Tom Swan jsams 201 West 103rd Street Indianapolis, Indiana 46290
Contents Part I Environments 1 1 Introducing Borland C++ 4.5 3 Requirements 4 Installing Borland C++ 7 Protected Mode and DPMI 7 Part and Chapter Summaries 8 Summary 12 2 Integrated Development Environment 15 The Borland C++ IDE 16 Hands-On Tutorials 17 Compiling This Book's Programs 37 Summary 40 3 Project Manager 41 The Project Window 42 Hands-On Tutorials 47 Summary 59 4 Command-Line Environment 61 The Command-Line Compilers 62 Using the Brief Programmer's Editor 66 Using Turbo Debugger for DOS 67 Summary 68 Part II Programming with ANCI C 69 5 Data: What a Program Knows 71 Anatomy of a C Program 72 Comments 78 Variables and Data Types 81 Symbolic Constants 106 Enumerated Types 110 Type Conversions 113 Summary 116 Exercises 116
6 Action: What a Program Does 119 Expressions 120 The //Statement 141 The ^Statement 145 The Conditional Expression 149 The switch Statement 149 The while Statement i5j The do-while Statement... 154 The for Statement 156 The break Statement 158 The continue Statement 160 The goto Statement 161 Halting a Program with exit 162 Summary 164 Exercises 165 7 Functions: Divide and Conquer 167 Top-Down Programming 167 Local Variables 182 Function Parameters and Arguments 193 Function Modifiers 206 Macros 208 Summary 212 Exercises 214 8 Data Structures 215 Arrays 215 Multidimensional Arrays 229 Structures 241 Unions 251 Bit-Field Structures 256 Arrays and Structures 260 Summary 262 Exercises 263
MASTERING BORLAND C++ 4.5, SECOND EDITION 9 Pointers 265 Introducing Pointers 266 Pointers and Dynamic Variables 275 Pointers and Data Structures 290 Pointers and Functions 303 Dynamic Data Structures 320 Advanced Pointer Techniques 333 Summary 337 Exercises..339 10 Strings 341 Nature of a String 341 Using String Functions 348 Searching Strings for Patterns 363 Related Memory Functions, 370 Summary 375 Exercises 375 11 Input and Output 377 Standard File I/O 378 Direct Console I/O 383 Reading and Writing Text Files 399 Reading and Writing Binary Files 413 Directories and Drives 429 Advanced File Techniques 434 Summary 440 Exercises 442 Part III Programming with ANSI C++ 443 12 Introducing C++ 445 Anatomy of a C++ Program 446 Comparing C and C++ 448 C++ Comments 449 Introducing I/O Streams 452 Constants 461 Inline Functions 462 References ^77 Summary...486 xii
CONTENTS Exercises 488 13 Progamming with Classes 491 Why Use Object-Oriented Programming? 492 Using Member Functions 500 Constructors and Destructors 521 Arrays of Class Objects 535 Summary 538 Exercises 540 14 Object-Oriented Programming 541 Single Inheritance 541 Virtual Functions 562 Multiple Inheritance 578 Summary 586 Exercises 588 15 Advanced Topics in C++ 589 Friends 590 Operator Overloading 596 Overloading and Memory Management 609 Copying Class Objects 613 Advanced I/O Streams 618 Templates 623 Odds and Ends 631 Exceptions 641 Runtime Type Information 669 The ANSI C++ string Class 672 Summary 676 Exercises 677 Part IV DOS and Windows Development 679 16 The Borland Graphics Interface 681 Introducing the Borland Graphics Interface 682 How to Compile and Run BGI Programs 683 Initializing BGI Drivers 688 Viewports and Coordinates 696 Plotting Points 702 Drawing Lines 703 xiii
MASTERING BORLAND C++ 4.5, SECOND EDITION Selecting Colors 707 Drawing Shapes 711 Circular Shapes 717 Bitmaps 724 BGI Text Fonts 726 Creating Stand-Alone Graphics Applications 731 Summary 734 17 Borland's Template Class Library 737 Introducing Template Container Classes 738 Developing Class Consciousness 747 Using Abstract Data Types... 757 Summary 777 18 Assembly Language Optimizations 779 C Function Anatomies 780 Writing Inline BASM Code 787 Writing External Turbo Assembler Modules 795 Writing External TASM Modules 798 Using Interrupts...801 Summary 808 19 DOS and Windows Developer's Toolbox 811 Command-Line Tools 811 Optimizations 816 Choosing a Memory Model 825 Overlays and VROOMM 835 A Few Good Classes 840 Summary 849 20 Introducing Windows Programming 851 The ObjectWindows Library 852 Developing Windows Applications with OWL 853 Device-Independent Graphics 863 Using Turbo Debugger for Windows 868 Using WinSight 869 Using WinSpector 871 Menus, Icons, and Other Resources 872 Windows and Graphics 877 DLLs and Custom Controls 880
CONTENTS New Features in Windows 3.1 892 Summary 904 21 Introducing OLE 2 907 Some OLE Terms 910 Creating a Simple OLE Program 912 What Are Server IDs and Why Have Them? 913 Building Your OLE 2 Program 914 Debugging Your OLE 2 Program 915 Compound Files 919 The Drag-and-Drop Interface 927 The In-Place Activation and Editing Interface 931 Summary 935 Exercises 935 22 Creating OLE 2 Applications 937 Building an OLE Server 938 Building an OLE Container 950 Summary 956 Exercises 956 Part V Function Encyclopedia 957 23 Functions and Examples 959 A Character Sets 1353 B Compiler (BCC) Options 1355 C Linker Options 1365 D Operator Precedence and Associativity 1369 E C and C++ Keywords 1371 Bibliography 1375 Index 1377 XV