C++ is a universal high-level programming language with support for several programming paradigms. In particular: object-oriented and procedural. It was developed by Bjarne Stroustrup at AT&T Bell Laboratories (Murray Hill, New Jersey) in 1979 and called “C with classes”. Stroustrup renamed the language C++ in 1983. It is based on the C language.

In the 1990s, C++ became one of the most widely used general-purpose programming languages.

Features
When creating C++, they tried to maintain compatibility with C. Most C programs will work properly with the C++ compiler. C++ has a syntax based on the C syntax.

The innovations of C++ in comparison with C are

support for object-oriented programming through classes;
support for generic programming through templates;
additions to the standard library;
additional data types;
exception handling;
namespaces;
built-in functions;
operator overloading;
function name overloading;
references and operators for managing freely allocated memory.

In 1998 the international standard of C++ language was ratified: ISO/IEC 14882 “Standard for the C++ Programming Language”. The current version of this standard is ISO/IEC 14882:2003.

Example of the program “Hello, world!”
Below is an example of a simple C++ program that displays the string Hello World on the standard output channel.

include

int main()
{
std::cout << “Hello, world!” << std::endl;
return 0;
}

History of the name
The name “C++” was invented by Rick Mascitti and was first used in December 1983. Earlier, at the development stage, the new language was called “C with classes”. The resulting name comes from the C operator “++” (increasing the value of a variable by one) and the common way of assigning new names to computer programs, which is to add a “+” symbol to the name to indicate improvements. According to Straustrup, “this name indicates the evolutionary nature of C changes”. The expression “C+” was the name of an earlier programming language, not related to C++.

Some C programmers may note that if the expressions x=3; y=x++; are executed, the result will be x=4 and y=3, because x is incremented only after assigning it to y. However, if the second expression is y=++x; then you will get x=4 and y=4. Based on this, we can conclude that it would be more logical to call the language not C++, but ++C. However, both c++ and ++c expressions increase c, and besides, the c++ expression is more common.

Pedants may also note that the introduction of C++ does not change C itself, so the most accurate name would be “C+1”.

Technical overview
In 1998, the C++ language was standardized by the International Organization for Standardization under the number 14882:1998 – C++ Programming Language. Currently, an ISO working group is working on a new version of the standard, codenamed C++09 (formerly known as C++0X), which should be released in 2009.

The 1998 C++ standard consists of two main parts: the language core and the standard library. The C++ standard library incorporated the STL template library, which was developed simultaneously with the standard. Now the name STL is not officially used, but in the circles of C++ programmers this name is used to denote the part of the standard library that contains the definitions of container templates, iterators, algorithms and functionors.

The C++ standard contains a normative reference to the C standard from 1990 and does not independently define those functions of the standard library that are borrowed from the standard C library.

In addition, there are a huge number of C++ libraries that are not included in the standard. Many C++ libraries can be used in C++ programs.

Standardization has defined the C++ programming language, but this name can also hide incomplete, limited pre-standard variants of the language. Initially, the language developed outside the formal framework, spontaneously, as the tasks set before it. The development of the language was accompanied by the development of the Cfront cross-compiler. Innovations in the language were reflected in the change of the cross-compiler version number. These version numbers of the cross-compiler also applied to the language itself, but for the present time we are not talking about the versions of the C++ language.

Standard library
The C++ standard library includes the standard C library with small changes that make it more appropriate for the C++ language. Another large part of the C++ library is based on the Standard Template Library (STL). It provides important tools such as containers (e.g. vectors and lists) and iterators (generic pointers) that provide access to these containers as arrays. In addition, STL allows you to work in a similar way with other types of containers, such as associative lists, stacks, queues.

Using templates, you can write generalized algorithms that can work with any containers or sequences whose members are accessed by iterators.

As well as in C, the capabilities of libraries are activated by using the #include directive to include standard files. In total, 50 such files are defined in the C++ standard.