The Chinese edition of this book is firstly published in 1999, the second edition is published in 2001, the third edition is published in 2003, and the fourth edition is published in 2010. This English edition is based on the former Chinese editions, which the author took advice widely from readers and colleagues, consulted the latest material and based on his teaching experience to complete.
1. Background of Writing This Book .
C++ is an object-oriented programming language, which is evolved from C. C++ has two main characteristics: one is its full compatibility with C and the other is that it supports object-oriented methods.
The object-oriented program design encapsulates data and related operations together to form an interdependent and indivisible whole-object. By abstracting common features of objects of the same category, we can get class. Most data in a class can only be processed by the methods encapsulated in the class. A class communicates with the outside world through a simple external interface, and objects communicate with each other through messages. In this way, we can have simple relationships among program modules, and module independency and data security can be ensured. Meanwhile, through inheritance and polymorphism, codes can be well reused, which facilitates both development and maintenance of software.
Because of the outstanding qualities of object-oriented methods, they have now become the major ways to develop large-scale software, and C++ is one of the most widely used object-oriented programming languages.
C++ has long been considered hard to use, and is seldom used as an introduction language to teach. Are C++ and object-oriented program design indeed hard to learn? The answer is no. In fact, when C was firstly created, it was only used by a few professional developers. However, along with the development of computer science, computer technologies have permeated to researches and applications of different subjects. Now C has been widely used by various engineers and technicians, and it has also been used as the introduction programming language in many schools, C++ is fully compatible with C, while it provides stricter and more secure grammars. In this sense, C++ firstly is a better C.
C++ is an Object-Oriented Programming (OOP) language. OOP has once been considered as a comparatively advanced technology. This is because that before the theories of Object-Oriented Analysis (OOA) and Object-Oriented Design (OOD) came up, to write a good object-oriented program, programmers should firstly learn to use object-oriented methods to understand and describe problems. Now, since the works of understanding problem domains and designing system components have been done during the phases of system analysis and system design, the work of OOP becomes much easier-it is just to write every component of an OOD model by an object-oriented programming language.
The emergence of object-oriented methods is in fact a process that the program design gets back to the roots. Essentially, software development is to correctly understand problems that the software needs to handle and to accurately describe the understandings. The fundamental principle that object-oriented methods emphasize is to develop software directly facing the objective existence9 and to apply the ways of human thinking and human expressions to software development. Thus, software development can return back to the real world from the past methods, rules and skills that are extravagantly specialized.
Then, do we need to learn C before learning C++? No. Although C++ is evolved from C, C++ itself is an integral programming language, and it has a completely different design philosophy with C. Our learning course needs not to exactly follow the development course of science technology. Only by mastering the latest theories and technologies quickly can we stand on giant's shoulders.



