2008-04-30 16:19:12
???? ???????????????? ??++: ????? ???????? ? ??????????? ?????????

1. ???????? ????? ???????? ?????

?????? ?????? ????? ???????????????? ??++ (????? ?? ????????? "?? ? ????????") ???? ??????????? ? ?????? 80-? ????? ??????? ????????????, ??????????? ?????????? AT&T Bell Labs, ??? ????? ???? ??????????? ????? ??????? ????????????????, ??? ???????????? ??????? UNIX ? ???? ???????????????? ??.

?? ????????? ?????? ?????? ?????, ??++ ??????? ?? ?????????????? ?? ??????. ??????????????, ?????????? ? ???????????????? ????? ???????????? ??????????? ?????????? ????????????. ???????????? ????? ?????????? ???? ???????? ?????, ?? ??????? ???? ?? ?????? ??????????????? ?????? ? ??? ???????. ???? ????????? ??????? ???????? ????? ??, ?? ?????????????? ????? ????????.

?? ?????? ??? ???? ?????????? ? ????? ???????????????? ????????????? ???? ???????????????? ??. ??????? ??????????, ???????? ??? ???????? ??, ????? ???????? ????????? ?????????? ?????? ? ????????-???????????????? ????????????????.

??? ??? ??????? ? AT&T, ???????? ?????? ????? ?? ???? ???????????? ?????. ??????? ??? ?????????????? ????? ???? ?????????? Bell Labs. ? 1993 ??????? ???? ??????????? ???????????? ??????????, ? ??? ???? ??? ?????? "?++", ??? ????? (???? ? ???? ???????? ????????????????? ????? ??) ?????????? ??? ??????????? ??? ??????????? ???? ??.

?????? ???????????? ????? ??? ???????????? cfront, ????????????? ????????? ?? ??++ ? ????????????? ????????? ?? ??. ? ?????? ? ????? 80-? ????? ???? ??????????? ?????? ???????????, ?? ???????????? ?? ? ???????? ?????????????? ?????. ???????? ????? ????? ???????????? ???? GNU CC.

???? ?? ??????? ???????????? ? ??????????? cfront, ?????? ?????? ? ????????? ????? ????? "The C++ Programming Language" (Addison-Wesley, 1985), ???????????? ?? ??????? ???? ? ???????? ? 1991 ???? (?????????? ?. ???? ???????????????? ?++. ?.: ????? ? ?????, 1991).

? ????? ??????? ???????? ??? ?????? ??????????????? ? ???????? ?????????????? ??????????.

?????? ?????????? ??? ???? ???????? ?????????????? ?? ????? ???????????????? Simula67 ? ??????????????? ? ???????? ?? ??????????? ??????????? ?????????? ?? ?????????????? ??????? ?? ??????????? ????????????. ????????? ??????????? ????? Simula ???? ?????????, ??? ???, ?? ?????? ?????? ??++, ???????????? ???????????? ? ??????? ????? ????????????????. ???, ? ?????? ??????? ??++ ????????? ????????????? ??????????? ???????????? ????????????? ???? ??????? (run-time type identification, rtti). ???????? ????????? ????????? ??? ? ??++ ???? ???????? ???????????? ? ?????? "What is Object Oriented Programming".

C 1985 ???? ? ???? ???? ??????? ????? ???????????: ????????????? ? ??????????? ????????????, ??????? ??????? ? ???????, ????????? ?????????????? ????????. ??????????? ???????? ????????? ??????????? ????????????? ????????? new, ??????? ????????? ??? ????????? ???????.

? ??????? ????????????? ? ?? ?????????? ??????? ???? ????????? ?????????????????? ? ??????????. ?????? ?????? ? ??? ???????? ????? ?????????? ? 1990 ???? ?????????? ? ?????????? ???????? ???????? ?????. ?????????? ??? ????? ????? ???????? ARM. ?????????? ???????????? ? ???? ???????? ?????????????? ?????.

??????????? ?????????????? ???????? ?? ????? ?????. ????? ????, ?????????? ?????? ???????? ????????? ????????? ? ??????? ??? ?????? ?????????????? ? ???????? ?? ??????????, ? ??????? ??????? ??????????? ????? ??????????? ?? ?????????? ? ????????????, ???????????? ?????? ??? ?????? ??????????.

2. ??????? ??????????????

???????????? ANSI-ISO (ANSI X3J16; ISO WG21/N0836) ??????? ????? ??????????????? ? ????? 1989 ????. ????? ??? ?????? ???????? ???????? ??????? ????????? ??? ????? ??++ ? ??? ???????????? ???????. ?? ?????? ??????? ????????? ???? ????? ???????? ?????, ?????? ? ARM, ? ?????.

? ?????? ????????????? ????????, ???????????????? ? ?? ??? ????, ???????????? ????? ???????? ???????? (? ??????????? ????????? ??? ??????? ??) ????????? ????????? ?????? ??????? ?????????, ? ????? ????????? ????????? ?????? ?????. ???????? ???? ?????????, ??? ???????????????? ?????????????? ??++ - ???? ?? ?????? ??????? ??????? ??????????????. ?????? ?? ??? ?????????????? ??????????? ? 1989 ????, ? ????????????????? ??????? ?????? ???????? ??? ?????? ANSI ??.

?????? ?? ?????????????? ??++ ??????????? ???, ??? ???? ?????? ????? ??? ?????? ??? ??????????. ???? ???????????? ?????? ARM ???? ???????????? ?????? ? ????? ????????? ?????????. ??++ ???? ???????? ?????????? ?????? (???????????? ????? ??? ? ?????? Ada), ? ?? ???? ??????? ?????? ?? ? ????????? ????? ??????? ??? ??? ?????? ? ????????.

? ??????? ?????? ?????????????? ????????? ?????????? ? ???? ????????? ??++. ?????????? ????? ???????? ??????????? ????????????? ? ????? ??????? ????????????? ??????????? ????? (rtti), ?????? ? ??????? ??????? ????????? ????? ???????? ???????. ??????????, ? ??++, ????????? ? ARM, ???? ???????? ??????? ??????????? ?? ??????????? ??????????? ??????????? ???????, ??????? ?????? ?????????. ??????????, ??? ????????? ?????????, ????????? ?????????? ????? ????????? ?????, ????????? ????? ????????????

?????????? ?????????????, ??? ????????????? ???????? ??????? ????????? ????? ???????????? ? 1994 ????. ??? ????? ???? ?????????? ?????????. ????? ???????, ??? ????????? 3 ???? ??????? ?????????????? ????????? ????????? ? ????????? "2 ???? ?? ??????????". ???, ???????? ???????? ?????????? ????????????? ???????? ??++ ?????? ???? ??????????? ? ????? 1998 ????, ?? ??? ?????? ?????? ?? ?????. ???? ??????????, ?? ???????? ????????? ? ?????????? ???????????? ????????????? ?????? ? ??????????? ????? ???? ?? ?????????? ?? ?????????????? ????????? ? ????????? ??????? ??? ????????? ???????????.

? ?????? ??????? ??????? ????????? ?? ???? ???????, ???????????? ??????????? ??????????. ?? ???? ???????? ?????????? ? ? ARM. ? ?? ?? ????? ?????????? ?????????? ?????????? ?????/??????, ???????????? Andrew Koenig, ???? ????????? ? ?????????? ??????????? ? ????? ?????????? "??-?????". ? 1993-1994 ????? ? ??????? ????????? ???? ??????? ????? ???? ????? ???????? ??? ???????? ??????????.

????????????? ?????? ???????? ? ??????? ???????? ????????? ??????????? ?????????? ????? ????????? ?????????? STL (Standard Template Library) ????????????? ????? ?????? ?????????????????, ??????????? Hewllet-Packard ??????????? ??????????. ? ????? ?????? ?? ??????? STL ?? ?????????, ??? ?????????? ????????? ???????????? ? ??++ ?????? ??????????? ????????, ??????????? ??????? (generic) ??????? ? ?????????? ????? Ada, ?? ????? ?????????? ?? ???????????? ???????????? ???????????? ??++ ??????? ???? ??????. ??????? ?? ?????????????? ????? ????????? ???? ???? ????, ?????? ?? ????, ??? ? ????????? ???????? ???? ??????? ?????????. ???? ??? ?????? ?????????? ????????? ? ??????? ?????? ????????????????: ?? ?????????? ???????? ??? ?????, ? ??? ???? ????????? ????????? ??? ???????? ??????????, ?????? ????????????? ?? ??????? ?????.

???????? ?????????? ?????? ???????? ?? ??????????????, ?????? ????????? ???????? ? ?????? 1995 ????, ??? ????????? ??? ?????????? ?????????? ? ?????? ???????? ????????????? Internet. ????????????, ??? ? ????? ??????? ??????? ????????? ????????? ? ????? ????????? ????????? ?? ?????. ??????????????, ??? ? ???????? 1996 ???? ????? ???????? ??????? ????????? ????? ???????? ?? ????????? ??????????, ?? ?? ??? ????? ???? ???? ??? ????????? ?? ????? ????.

3. ??????????? ????????? ?????

???????? ?????? ???????? ????? ???????????? ?????, ????????? ? ??????? ?????????? ARM ? ?? ?????????? ??????? ????????? ? ?????? 1995?.

?????? ????? ???????? ?????-???????? ??? ???????? (and, and_eq, bitand, bitor, compl, not, or, or_eq, xor, xor-equ).

? ????? ???????? ????????? ??? ?????? bool ? ???????? ????? ???? true ? false.

???????? ???????? ??????????? ???? (namespace), ??????????? ?????????? ?????????? ???????? ???????? ????????????? ? ??????????? ???????? ??????? ??? ????????????? ?????????? ????????? (???????? ????? namespace ? using).

????? ???????? ????? explicit ????????? ????????? ????????????? ????????????? ????????????? ??? ??????? ?????????????? ?????.

???????? ????????? ? ????????? ??? ????????? ???? ??????? ? ?????? ???????. ????? ???????? ????????? ???????????? ?????? ????????? ??? ????????????? ?????? ??????????? ???? ? ?????? ???????. ??? ???? ????????? ?????????? ??????? ?????? ???????? ?????????? ?? ?????? ????????? ???????????? ??????? (?? ?????? ????????????? ????????? ????? using).

???????? ???????? ?????? ????????????? rtti (?????????? ???????? ? ???????? ?????? typeid ? ????? type_info ??????????? ??????????).

????????? ????? ? ??????????????? ?????? ??????? ?????? ?????????????? ????? (static_cast, dynamic_cast, const_cast ? reinterpret_cast).

????????? ????? ???????? new[], ?????? ? ???????? delete[]; ??? ???????? new ? delete ???????? ????????? ????????? ?????????? ? ????? ????? ?????????? ????????? ?????????????? ???????? ? ?????????????. ??????????? ???????? new ?????? ?? ????? ??????? ???????? 0 ? ?????? ???????? ?????? ??? ??????, ? ?????????? ?????????????? ????????. ?????? ???????, ???????????? 0, ???????? ???????????? ?????? c ????? ?????????.

?????????? ?????????? ?????? ???????? ?? ?????? ? ????????? for-?????, ?? ? ? ?????????? if, while, do-while, switch.

????? ????? ?????????? ????? ????? ????????? ???????? ? ?????????. ?????? ????? ?? ????? ??????????? ?????? ??????????, ? ?? ?????? ???????? ?????, ??? ??????? ? ARM.

????????? ???????????? ??????????? ???????? ? ??++. ?????? ??? ?????? ???????, ??? ??????? ??++ ???????? ???? ?????? ???????????????? ??????????????? ?????????????. ??? ??? ?????????? ?????????????? ?????? ? ???????? ????????? (? ??????????? ????????? ???????). ??????????????? ?????? ??? ????????, ?????????? ??????????? ???????? ??????? ??????????, ???? ??????????? ??????????? ????????? ?????? typename.

??????????? ????????? ???????-????? ??????????? ???????, ????????? ????????? ?????? ? ??????? - ????????? ????????.

??????????? ??????? ????? ?????????? ???, ???????? ?? ???? ??????????? ??????? ???????? ??????, ???? ??? ???? ???????? ??????????? ??? ???????? ?? ??????????? ? ??????? ?????.

???????????? ??? (enum) ???????????? ?????????? ??? ??????????????? ???, ?? ?????????? ?? ????? ?? ????????????? ?????. ?????? ????????? ?????????? ????????????? ???????, ?????????? ?? ???? ????????; ????????? 0 ????????????? ???? ????? ?? ????????? ????????????? 0, ????????? ?? ??????? ?????????????? ? ????????????? ????.

????????? ??????????? ?? ???, ???????????? ????????? ->. ?????? ??? ????? ???? ??????????? ???????????? ???.

????????? (?? ???????? ?????????????) ???????? ????? mutable, ??????????? ????????? ????????? ?????? ??????? ???????????? ??????.

????? ???????? ????????? ?? ???? ????????? ??????????? ? ??????.

4. ???????????

????? ???????, ????? ???????? ????? ??? ??????? ??????. ??? ????? ??????????? ????????????? ?????? ???????????????? ??? ??++ ?? ??????????? ?????? ????????? ????? ???????????? ?????, ??????? ? ????????? ?????? ?? ???????????. ???????, ????? ???? ??? ??????? ????????????, ? ? ???? ?? ??????????? ????? ????????, ?????????????? ?????? ?????????.

?, ???????, ????????? ????????? ?? ?????? ??????????????? ????????? ?? ???? ????? "??? ????? - ?? ??? ??++" ??? "???????? ?? ??++ ?????? ???".

??++ ?????????? ?? ??? "?????????????" ?????? ????????????????. ??? ????? ?????????? ? ?????????? ??????? ?? ?????????????? ?????? ? ?????????? ????????? ???, ???? ?? ??, ??? ??? ???????????????? ???????????????? ??? ???? ??, ??????? ???? ?? ???????? ?? ???? "??????????????" ?????, ?? ????? ????????? ? ????? ???????????????? ?????????????.

?????????? ??????????? ??++ ?? ???????????? ???????? ??? "????????????" ????????? ???. ??++ ?????? ???????????? ? ???????????? ????????? ???, ?????? ????????????. ??++ ?? ???????? ???????????? ?????? ??? ? ????? ????? ?? ???? ?????????? ? ???????????.

?????? ??? ???? ?????????????? ? ?????????? ?????? ????????????????, ?? ?????? ?? ??? ??? ??++, ? ??????????? ????? ??????????? ?????? (???, ??????????? ???????????????? ????????- ??????????????? ???? Ada95 ??? ??????????????). ?????????? ?????? ? ????? ??++ ?? "????????????" ????????? ??? ??????? ????????? ???????????. ???? ????? ?????? ???, ??? ????? ??? ? ?????? ?????? ????????, ??? ??++ ???????? ?????? ?????????? ? ???????? ???????????? ???.

????????? ????? ?????? ??++ ??? ?????? ????????? ??????????????, ??? ???????? ???? ???????????????? ?? ??, ?? ?? ????????????? ???????? ? ???????????????? ??????? "???????" ????????-???????????????? ????????????????.

????????????????? ?? ? ??++ ???? ?? ?????. ???? ?? ??? ???????????? ????????? ?????? ?? ?????????? ????????????, ??????? ????? ???? ???????????? ??????????.

??++ ????????? ????????????? ? ?????????? ?????????. ??-??????, ?? ???????? ???? ???????????????? ??, ??????, ??? ????????????????? ??????? ANSI C ????? ???????. ??? ???? ??++ ???????? ????? ??????? ? ???????? ????????? ???????? ?????. ??????????? ????? ???????????? ???? ????? ???????????? ??++, ?? ??????????? ??? ???? ? ??????????????, ?????????? ? ???????? ??????? ????? (?? ???? ???????????? ??++ ??? "??????????" ??). ????? ???????????? ?????? ???????? ??????? ? ????????????, ?? ????????? ????????????? ??????????? (generic) ????????????????, ??????????? ?? ????????. ???????, ?????? ????????????? ???????????? ??????????? ????????? ?????????????? ????????, ?? ????????? ?? ?????? ?????????? ?????. ?????? ??????, ??? ??????????? ?????????? ???????????? ???????????, ?????????? ?????? ? ?????? ???? ???????????????? ???????? ?????? ? ?????????? ???.

??????, ?? ?? ????????? ? ??????. ?? ??????? ????, ????????? 20 ??? ????????, ??? ?? ???????? ????????????? ?????? ? ???????????? ??????, ?????? ??? ??? ?????????? ????????????????, ??? ? ??? ???????? ?????????? ???????? ???????. ?????? ?? ????? ????? ????? ? ?????? ????? ??????, ??? ?????? ???????? "???????" ????? ???????? ? ???? ??????? ????, ??????? ????? ????????????. ? ? ???? ??? ?????????.

?????? ??????? ??++ ? ?? ??? ?? ???????.

????????: http://www.citforum.ru/


??????? ???????? ?????? ????????????????
??????? ???????? ???????????? ??????? ? ?????
??????? ???????????? ????