Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ c: C++ β€” ВикипСдия – C Sharp β€” ВикипСдия

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ C ΠΈ C ++

ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅Β ΠΌΠ΅ΠΆΠ΄Ρƒ Π‘ ΠΈ C ++ являСтся Ρ‚ΠΎ ,Β Ρ‡Ρ‚ΠΎΒ Π‘ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Β Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ C ++ являСтся подмноТСством C ,Β ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ структуры, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ β€”Β ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β (ООП)Β .

C β€” это язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, ΠΈ ΠΎΠ½ являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ языком для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° соврСмСнных языков программирования.Β Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, C ++ являСтся ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ΠΌ языка Π‘ΠΈ.Β Π›ΡŽΠ±Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° C являСтся допустимой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π° C ++.Β ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ C ++ ΠΊΠ°ΠΊ C с классами .Β Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ООП Π² C ++.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅
  1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ CΒ  Β  Β  Β  β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, особСнности
  2. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ C ++Β  Β β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, особСнности
  3. Β Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ C ΠΈ C ++ Β  Β β€” сравнСниС, основныС различия
ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ опрСдСлСния

C, C ++, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π‘

C β€” это язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния высокого уровня, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ДСннисом Π ΠΈΡ‚Ρ‡ΠΈ Π² Bell Labs.Β C β€” это язык структурированного программирования.Β Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊΒ Ρ†ΠΈΠΊΠ»Ρ‹ (for, while, do while), Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ (if / else) ΠΈ Ρ‚.Π΄.



Π―Π·Ρ‹ΠΊ CΠ―Π·Ρ‹ΠΊ C

C являСтся основой для Π΄Ρ€ΡƒΠ³ΠΈΡ… соврСмСнных языков, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊΒ Python, JavaΒ ,Β Perl ΠΈ Ruby.Β ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ быстрСС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ компилятор для прСобразования исходного ΠΊΠΎΠ΄Π° Π² эквивалСнтный ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.Β ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ прСдоставляСт Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.Β ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, доступныС Π² этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, для написания эффСктивных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.Β ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, сСтСвыС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹, компиляторы, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, встроСнныС систСмы, языковыС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ тСкстовыС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ β€” Π²ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с использованиСм языка Π‘ΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ C ++

C ++ β€” это язык программирования, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π‘ΡŒΡΡ€Π½ΠΎΠΌ Бтрауструпом Π² Bell Labs. Он ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Π΅ΠΌ язык Π‘ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ структурноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ООП, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ инкапсуляция, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, наслСдованиС ΠΈ Ρ‚.Π΄., Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ C ++. Он Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Standard Template Library (STL). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, доступныС Π² этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π² своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.


Π―Π·Ρ‹ΠΊ C++Π―Π·Ρ‹ΠΊ C++

C ++ β€” это язык, основанный Π½Π° компиляторС.Β ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ вСсь исходный ΠΊΠΎΠ΄ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.Β ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.Β Π­Ρ‚ΠΎ свойство Π² C ++ позволяСт Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ систСмы Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ быстро Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.Β Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ C ++ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² устройств.


Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ C ΠΈ C ++
ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

C β€” это язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ C ++ β€” это язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ функциями программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт срСдства для Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… манипуляций с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.Β Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² этом Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ C ΠΈ C ++.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ

ДСннис Π ΠΈΡ‚Ρ‡ΠΈ β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ C, Π° Π‘ΡŒΡΡ€Π½ Бтрауструп β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ C ++.

Основная ΠŸΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, основноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ C ΠΈ C ++ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ C Π² основном ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ структурноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ C ++ Π² основном ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ структурноС ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

OOP

Π’ C Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ООП;Β Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, программист ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, наслСдованиС, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΈ Ρ‚. Π΄. Π² C ++.

Π’Π²ΠΎΠ΄, Π²Ρ‹Π²ΠΎΠ΄

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ C ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ scanf ΠΈ printf для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°, C ++ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ cin ΠΈ cout для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°.Β Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, это Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ C ΠΈ C ++.

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… β€” это Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ C ΠΈ C ++.Β Π”Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ бСзопасны Π² C, Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ бСзопасны Π² C ++, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа ΠΈΠ· ООП для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

Π’ Π‘ΠΈ программист Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Но Π² C ++ программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² любом мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ C ΠΈ C ++ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² C. Π½Π΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Однако Π² C ++ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ООП.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² C. Π½Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Однако Π² C ++ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (Π±Π»ΠΎΠΊΠΈ try, catch, finally).

ДинамичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

C ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ calloc, malloc для выдСлСния памяти ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для освобоТдСния памяти.Β C ++ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new для выдСлСния памяти ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ удалСния для освобоТдСния памяти.Β Π˜Ρ‚Π°ΠΊ, это Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ C ΠΈ C ++.


Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для C β€” это Ρ„Π°ΠΉΠ» stdio.h, Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для C ++ β€” iostream.h.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C β€” .c, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ C ++ β€” .cpp.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности

C ++ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΄Ρ€ΡƒΠ³Π°, пространство ΠΈΠΌΠ΅Π½ ΠΈ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½ΠΎ C Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.Β Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, это Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ C ΠΈ C ++.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅, C ++ β€” это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ C. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ C ++ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° C, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ C Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ C ++.Β Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ C ΠΈ C ++ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ C ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ структурированноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ C ++ β€” это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ структурноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (OOP).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Net Framework ΠΈ язык C#? β€” Π₯Π°Π±Ρ€ Q&A

ΠžΠΏΡƒΡΠΊΠ°ΡΡΡŒ Π΄ΠΎ уровня «Π½Π° ΠΏΠ°Π»ΡŒΡ†Π°Ρ…»:


НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ассСмблСрС (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ платформСннозависимый), ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° процСссорах Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ x86. ΠŸΡ€ΠΈ этом, Π²Π°ΠΌ придётся ΠΏΠΈΡΠ°Ρ‚ΡŒ эту ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

ПоднимСмся Π²Ρ‹ΡˆΠ΅. НапишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C ΠΈΠ»ΠΈ Π‘++. Она ΡƒΠΆΠ΅ отчасти платформСннонСзависима, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ компиляции Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…, Ρ‚Π° ΠΈΠ»ΠΈ иная рСализация компилятора ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ особСнности ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ совмСстимый ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Но допустим, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ слоТнСС hello world. Π’Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ подходящий Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π² стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… ΠΈ, допустим, Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅. Π—Π°Ρ‚ΠΎ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ А, Π½ΠΎ Π²Π΄Ρ€ΡƒΠ³ выясняСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ стороннСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π‘, которая …
Ну, Π² Ρ†Π΅Π»ΠΎΠΌ, Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° зависимостСй ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вСсьма Π΄Π»ΠΈΠ½Π½ΠΎΠΉ. И Π²ΠΎΡ‚, ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ€Π°Π΄ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΠΈΡ‡ΠΈ обрастаСт ΠΊΡƒΡ‡Π΅ΠΉ зависимостСй. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ лицСнзирования, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π³ΡƒΠ³Π»ΠΈΡ‚Π΅ ΠΈ скачиваСтС ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ΠΎΠ², скорСС всСго распространяСтся ΠΊΠ°ΠΊ Open Source, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ — Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ свой исходный ΠΊΠΎΠ΄ (всё Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, Π½ΠΎ Ссли ваши намСрСния ΠΏΠΎ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° выходят нСсколько дальшС, Ρ‡Π΅ΠΌ лабораторная Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ).



Π£ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой «Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄» ΠΏΠΎΠ΄ сСбя, Π½ΠΎ, Ρ‚Π΅ΠΌ самым, Π²Ρ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ врСмя Π½Π° созданиС Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅, ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΏΡ€ΠΎ это.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ .Net Framework. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ для вас ΠΈ написали нСсколько дСсятков (ΠΈΠ»ΠΈ сотСн) тысяч классов практичСски ΠΏΠΎΠ΄ΠΎ всС ΡƒΠΌΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ это «ΠΊΡƒΠ±ΠΈΠΊΠΈ Π»Π΅Π³ΠΎ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π²Π°ΠΌ Π‘Π«Π‘Π’Π Πž ΠΏΠΈΡΠ°Ρ‚ΡŒ прилоТСния, ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠ²ΡˆΠΈΡΡŒ Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ΅ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
Π’Π°ΠΌ Π½Π΅ Π½Π°Π΄ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ свой Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄, Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΡΠ΅Ρ‚ΡŒΡŽ, ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€. Всё ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ, всё ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π² 1-2 строки. Всё Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΊ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ.

Как ΠΆΠ΅ этим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ? Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языках: C#, VB.Net, F# ΠΈ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π΅Ρ‰Ρ‘ Π½Π°ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈ, всС ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с Common Language Runtime ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊΠΎ всСм классам Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.

C++ | Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π―Π·Ρ‹ΠΊ программирования C++

ПослСднСС обновлСниС: 28.08.2017

Π―Π·Ρ‹ΠΊ программирования Π‘++ прСдставляСт высокоуровнСвый ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚
для создания самых Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. На сСгодняшний дСнь Π‘++ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых популярных ΠΈ распространСнных языков.

Π‘Π²ΠΎΠΈΠΌΠΈ корнями ΠΎΠ½ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π² язык Π‘ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1969β€”1973 Π³ΠΎΠ΄Π°Ρ… Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Bell Labs программистом ДСннисом Π ΠΈΡ‚Ρ‡ΠΈ (Dennis Ritchie).
Π’ Π½Π°Ρ‡Π°Π»Π΅ 1980-Ρ… Π³ΠΎΠ΄ΠΎΠ² датский программист Π‘ΡŒΠ΅Ρ€Π½ Бтрауструп (Bjarne Stroustrup), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Ρ‚ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Π°Π» Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Bell Labs, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» Π‘++ ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅
ΠΊ языку Π‘ΠΈ. ЀактичСски Π²Π½Π°Ρ‡Π°Π»Π΅ C++ просто дополнял язык Π‘ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ возмоТностями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. И поэтому сам Бтрауструп Π²Π½Π°Ρ‡Π°Π»Π΅ Π½Π°Π·Ρ‹Π²Π°Π» Π΅Π³ΠΎ
ΠΊΠ°ΠΊ «C with classes» («Π‘ΠΈ с классами»).


ВпослСдствии Π½ΠΎΠ²Ρ‹ΠΉ язык стал Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ. Π’ Π½Π΅Π³ΠΎ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°Π»ΠΈ Π΅Π³ΠΎ Π½Π΅ просто Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π‘ΠΈ, Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹ΠΌ языком программирования.
Π’ ΠΈΡ‚ΠΎΠ³Π΅ «Π‘ΠΈ с классами» Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π² Π‘++. И с Ρ‚Π΅Ρ… ΠΏΠΎ ΠΎΠ±Π° языка стали Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°.

Π‘++ являСтся ΠΌΠΎΡ‰Π½Ρ‹ΠΌ языком, унаслСдовав ΠΎΡ‚ Π‘ΠΈ Π±ΠΎΠ³Π°Ρ‚Ρ‹Π΅ возмоТности ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ Π‘++ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ своС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² систСмном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π² частности, ΠΏΡ€ΠΈ создании ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚,
антивирусов ΠΈ Ρ‚.Π΄. К слову ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ОБ Windows большСй Ρ‡Π°ΡΡ‚ΡŒΡŽ написана Π½Π° Π‘++. Но Ρ‚ΠΎΠ»ΡŒΠΊΠΎ систСмным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка Π½Π΅
ограничиваСтся. Π‘++ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… любого уровня, Π³Π΄Π΅ Π²Π°ΠΆΠ½Ρ‹ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ
ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. НСрСдко ΠΎΠ½ примСняСтся для создания графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’Π°ΠΊΠΆΠ΅ особСнно часто Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для создания ΠΈΠ³Ρ€ с
Π±ΠΎΠ³Π°Ρ‚ΠΎΠΉ насыщСнной Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² послСднСС врСмя Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ…ΠΎΠ΄ мобильноС Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, Π³Π΄Π΅ Π‘++ Ρ‚ΠΎΠΆΠ΅ нашСл своС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. И Π΄Π°ΠΆΠ΅ Π² Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅
Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π‘++ для создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСрвисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ Π²Π΅Π±-прилоТСния. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π‘++ — язык ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ пользования, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ практичСски Π»ΡŽΠ±Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π‘++ являСтся ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком, Π° это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ компилятор транслируСт исходный ΠΊΠΎΠ΄ Π½Π° Π‘++ Π² исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π½Π°Π±ΠΎΡ€
ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… инструкций. Но Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ свои особСнности, поэтому скомпилированныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ нСльзя просто пСрСнСсти с ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π°
Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈ Ρ‚Π°ΠΌ ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. Однако Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘++ ΠΏΠΎ большСй стСпСни ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ, Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ спСцифичныС для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ос Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
А Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ компиляторов, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ΄ всС распространСнныС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ позволяСт ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅
исходный ΠΊΠΎΠ΄ Π½Π° Π‘++ Π² прилоТСния ΠΏΠΎΠ΄ эти ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.


Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π‘ΠΈ язык C++ позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ прилоТСния Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ стилС, прСдставляя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ собой классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
Π§Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ созданиС ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ этапы развития

Π’ 1979-80 Π³ΠΎΠ΄Π°Ρ… Π‘ΡŒΠ΅Ρ€Π½ Бтрауструп Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΊ языку Π‘ΠΈ — «Π‘ΠΈ с классами». Π’ 1983 язык Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π² Π‘++.

Π’ 1985 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° пСрвая коммСрчСская вСрсия языка Π‘++, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ «Π―Π·Ρ‹ΠΊΠ° программирования C++»,
которая прСдставляла ΠΏΠ΅Ρ€Π²ΠΎΠ΅ описаниС этого языка ΠΏΡ€ΠΈ отсутствии ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ стандарта.

Π’ 1989 Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° новая вСрсия языка C++ 2.0, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π»Π° ряд Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй. ПослС этого язык развивался ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ 2011 Π³ΠΎΠ΄Π°. Но ΠΏΡ€ΠΈ этом
Π² 1998 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π»Π° прСдпринята пСрвая ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎ стандартизации языка ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ISO (International Organiztion for Standartization). ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ стандарт
ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ISO/IEC 14882:1998 ΠΈΠ»ΠΈ сокращСнно Π‘++98. Π’ дальнСйшСм Π² 2003 Π±Ρ‹Π»Π° ΠΈΠ·Π΄Π°Π½Π° новая вСрсия стандарта C++03.

Π’ 2011 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π» ΠΈΠ·Π΄Π°Π½ Π½ΠΎΠ²Ρ‹ΠΉ стандарт C++11, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТал мноТСство Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±ΠΎΠ³Π°Ρ‰Π°Π» язык Π‘++ большим числом Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ…
возмоТностСй. ПослС этого Π² 2014 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ΠΎ нСбольшоС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊ стандарту, извСстноС Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ C++14.
И Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ€Π΅Π»ΠΈΠ· языка Π½Π°ΠΌΠ΅Ρ‡Π΅Π½ Π½Π° 2017.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ ΠΈ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π‘++ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ компилятор — ΠΎΠ½ транслируСт исходный ΠΊΠΎΠ΄ Π½Π° языкС Π‘++ Π² исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ. Но
Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… компиляторов. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ аспСктам, Π² частности, ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стандартов.
Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ список компиляторов для Π‘++ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ.
РСкомСндуСтся для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚Π΅ компиляторы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ всС послСдниС стандарты. Π’Π°ΠΊ, Π½Π° протяТСнии всСго руководства
прСимущСствСнно Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ свободно распространяСмый компилятор g++, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GNU.

Π’Π°ΠΊΠΆΠ΅ для создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ IDE, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Visual Studio, Netbeans, Eclipse, Qt ΠΈ Ρ‚.Π΄.

C Sharp — это… Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ C Sharp?

Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. C.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ этой ΡΡ‚Π°Ρ‚ΡŒΠΈΒ β€” C#. Он ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ·-Π·Π° тСхничСских ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.
C#
Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ°:

ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ

Класс языка:

ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅Π½Π½Ρ‹ΠΉ:
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ,
ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ, ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ, событийный, Ρ€Π΅Ρ„Π»Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ

Появился в:

2000

Автор(Ρ‹):

АндСрс Π₯СйлсбСрг

Π Π΅Π»ΠΈΠ·:

5.0 (15 августа 2012)

Випизация Π΄Π°Π½Π½Ρ‹Ρ…:

статичСская, динамичСская, строгая, утиная, Π²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠ²

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

Visual C#, .NET Framework, Mono, DotGNU

Π”ΠΈΠ°Π»Π΅ΠΊΡ‚Ρ‹:

Cω, Spec#, Polyphonic C#

Π˜ΡΠΏΡ‹Ρ‚Π°Π» влияниС:

C++, Java[1][2][3], Delphi, ΠœΠΎΠ΄ΡƒΠ»Π° ΠΈ Smalltalk

Повлиял на:

Cω, F#, Nemerle, Vala, Windows PowerShell

C# (произносится си ΡˆΠ°Ρ€ΠΏ)Β β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1998β€”2001 Π³ΠΎΠ΄Π°Ρ… Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄ руководством АндСрса Π₯СйлсбСрга Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft ΠΊΠ°ΠΊ язык Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Microsoft .NET Framework ΠΈ впослСдствии Π±Ρ‹Π» стандартизирован ΠΊΠ°ΠΊ ECMA-334 ΠΈ ISO/IEC 23270.

C# относится ΠΊ сСмьС языков с C-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ синтаксисом, ΠΈΠ· Π½ΠΈΡ… Π΅Π³ΠΎ синтаксис Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ C++ ΠΈ Java. Π―Π·Ρ‹ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (Π² Ρ‚ΠΎΠΌ числС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² явного ΠΈ нСявного привСдСния Ρ‚ΠΈΠΏΠ°), Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, события, свойства, ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΉ, LINQ, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XML.

ΠŸΠ΅Ρ€Π΅Π½ΡΠ² ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΎΡ‚ своих ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠΎΠ²Β β€” языков C++, Java, Delphi, ΠœΠΎΠ΄ΡƒΠ»Π° ΠΈ SmalltalkΒ β€” Π‘#, ΠΎΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ ΠΈΡ… использования, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π²ΡˆΠΈΠ΅ сСбя ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, C# Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ C++ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСствСнноС наслСдованиС классов (ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ допускаСтся мноТСствСнноС наслСдованиС интСрфСйсов).

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ языка

C# разрабатывался ΠΊΠ°ΠΊ язык программирования ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня для CLR ΠΈ, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ, зависит, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΎΡ‚ возмоТностСй самой CLR. Π­Ρ‚ΠΎ касаСтся, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, систСмы Ρ‚ΠΈΠΏΠΎΠ² C#, которая ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ BCL. ΠŸΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΈΠ»ΠΈ отсутствиС Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… особСнностСй языка диктуСтся Ρ‚Π΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ конкрСтная языковая ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π±Ρ‹Ρ‚ΡŒ транслирована Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ конструкции CLR. Π’Π°ΠΊ, с Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ CLR ΠΎΡ‚ вСрсии 1.1 ΠΊ 2.0 Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ обогатился ΠΈ сам C#; ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ взаимодСйствия слСдуСт ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΈ Π² дальнСйшСм. (Однако эта Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Π½Π°Ρ€ΡƒΡˆΠ΅Π½Π° с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ C# 3.0, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ собой Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ языка, Π½Π΅ ΠΎΠΏΠΈΡ€Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET.) CLR прСдоставляСт C#, ΠΊΠ°ΠΊ ΠΈ всСм Π΄Ρ€ΡƒΠ³ΠΈΠΌ .NET-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языкам, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π»ΠΈΡˆΠ΅Π½Ρ‹ «классичСскиС» языки программирования. НапримСр, сборка мусора Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² самом C#, Π° производится CLR для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° C# Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ это дСлаСтся для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° VB.NET, J# ΠΈ Π΄Ρ€.

НазваниС языка

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ c: C++ β€” ВикипСдия – C Sharp β€” ВикипСдия

НазваниС Β«Π‘ΠΈ ΡˆΠ°Ρ€ΠΏΒ» (ΠΎΡ‚ Π°Π½Π³Π». sharp — Π΄ΠΈΠ΅Π·) происходит ΠΎΡ‚ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Π³Π΄Π΅ Π·Π½Π°ΠΊ Π΄ΠΈΠ΅Π·, прибавляСмый ΠΊ основному ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π½ΠΎΡ‚Ρ‹, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ этой Π½ΠΎΡ‚Π΅ Π·Π²ΡƒΠΊΠ° Π½Π° ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½.[4] Π­Ρ‚ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ названию языка C++, Π³Π΄Π΅ Β«++Β» ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° Π½Π° 1.

ВслСдствиС тСхничСских ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (стандартныС ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΈΒ Ρ‚.Β Π΄.) ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°, Ρ‡Ρ‚ΠΎ Π·Π½Π°ΠΊ Π΄ΠΈΠ΅Π· ♯​ Π½Π΅ прСдставлСн Π½Π° стандартной ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅, Π·Π½Π°ΠΊ Π½ΠΎΠΌΠ΅Ρ€Π° # Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ для прСдставлСния Π·Π½Π°ΠΊΠ° Π΄ΠΈΠ΅Π· ΠΏΡ€ΠΈ записи ΠΈΠΌΠ΅Π½ΠΈ языка программирования.[5] Π­Ρ‚ΠΎ соглашСниС ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π―Π·Ρ‹ΠΊΠ° C# ECMA-334.[6] Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹ ΠΈ ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡Π½ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅[7]), ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°ΠΊ.

Названия языков программирования Π½Π΅ принято ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ, поэтому Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ язык Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎ-английски Β«Π‘ΠΈ ΡˆΠ°Ρ€ΠΏΒ».

Бтандартизация

C# стандартизирован Π² ECMA (ECMA-334)[8] ΠΈ ISO (ISO/IEC 23270)[9].

Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΠΎ Ρ‚Ρ€Ρ‘Ρ… нСзависимых рСализациях C#, Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° этой спСцификации ΠΈ находящихся Π² настоящСС врСмя Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… стадиях Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

ВСрсии

На протяТСнии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ языка C# Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ΠΎ нСсколько Π΅Π³ΠΎ вСрсий:

ΠžΠ±Ρ‰Π°Ρ информация ΠΏΠΎ вСрсиям
C# 2.0C# 3.0C# 4.0C# 5.0
НовыС
возмоТности
  • ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΡ
  • Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹
  • АнонимныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
  • Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
  • ΠΡƒΠ»ΡŒ-Ρ‚ΠΈΠΏΡ‹
  • НСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
  • Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ
  • АвтоматичСская рСализация свойств
  • АнонимныС Ρ‚ΠΈΠΏΡ‹
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ
  • Запросы
  • Лямбда-выраТСния
  • Π”Π΅Ρ€Π΅Π²ΡŒΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ
  • ДинамичСскоС связываниС
  • Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹
  • ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Π°Ρ ΠΊΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ
  • АсинхронныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΊΠ°ΠΊ слуТба

ВСрсия 1.0

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ C# Π±Ρ‹Π» Π½Π°Ρ‡Π°Ρ‚ Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 1998 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ COOL (C-style Object Oriented Language). ВСрсия 1.0 Π±Ρ‹Π»Π° анонсирована вмСстС с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ .NET Π² июнС 2000 Π³ΠΎΠ΄Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΆΠ΅ появилась ΠΈ пСрвая общСдоступная Π±Π΅Ρ‚Π°-вСрсия; C# 1.0 ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΡˆΠ΅Π» вмСстС с Microsoft Visual Studio .NET Π² Ρ„Π΅Π²Ρ€Π°Π»Π΅ 2002 Π³ΠΎΠ΄Π°.

ΠŸΠ΅Ρ€Π²Π°Ρ вСрсия C# Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»Π° ΠΏΠΎ своим возмоТностям Java 1.4, нСсколько ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€ΡΡ: Ρ‚Π°ΠΊ, Π² C# имСлись свойства (выглядящиС Π² ΠΊΠΎΠ΄Π΅ ΠΊΠ°ΠΊ поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ Π½Π° Π΄Π΅Π»Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса), индСксаторы (ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ свойствам, Π½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠ°ΠΊ индСкс массива), события, Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹, Ρ†ΠΈΠΊΠ»Ρ‹ foreach, структуры, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, автоматичСскоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΈ нСобходимости (boxing), Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, встроСнныС срСдства взаимодСйствия с нСуправляСмым ΠΊΠΎΠ΄ΠΎΠΌ (DLL, COM) ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² C# Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π±Ρ‹Π»ΠΎ пСрСнСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ возмоТности C++, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΠ΅ Π² Java: Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ограничСниями, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ C++), ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎ ссылкС, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ числом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ goto (с ограничСниями). Π’Π°ΠΊΠΆΠ΅ Π² C# оставили ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с указатСлями — Π² мСстах ΠΊΠΎΠ΄Π°, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… словом unsafe ΠΈ ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΡ†ΠΈΠΈ компилятору.

ВСрсия 2.0

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ спСцификации C# 2.0 Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Microsoft Π² октябрС 2003 Π³ΠΎΠ΄Π°; Π² 2004 Π³ΠΎΠ΄Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ Π±Π΅Ρ‚Π°-вСрсии (ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Whidbey), C# 2.0 ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΡˆΠ΅Π» 7 ноября 2005 Π³ΠΎΠ΄Π° вмСстС с Visual Studio 2005 ΠΈ .NET 2.0.

НовыС возмоТности Π² вСрсии 2.0
  • ЧастичныС Ρ‚ΠΈΠΏΡ‹ (Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ»).
  • ΠžΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Π΅, ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (generics). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ шаблонов C++, ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. ВмСстС с Ρ‚Π΅ΠΌ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ выраТСния, ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ»ΠΈ частично спСциализированы, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΡ‚ шаблонного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° нСльзя Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΈΒ Ρ‚.Β Π΄.[12]
  • Новая Ρ„ΠΎΡ€ΠΌΠ° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сопрограммы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова yield, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Python ΠΈ Ruby.
  • АнонимныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ замыкания.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ‘??’: return obj1Β ?? obj2; ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ (Π² Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ C# 1.0) return obj1!=nullΒ ? obj1Β : obj2;.
  • ΠžΠ±Π½ΡƒΠ»ΡΠ΅ΠΌΡ‹Π΅ (‘nullable’) Ρ‚ΠΈΠΏΡ‹-значСния (ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌΡ‹Π΅ Π²ΠΎΠΏΡ€ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°ΠΊΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, int? i = null;), ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой Ρ‚Π΅ ΠΆΠ΅ самыС Ρ‚ΠΈΠΏΡ‹-значСния, способныС ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null. Π’Π°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ взаимодСйствиС с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· язык SQL.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ ΠΈ Π΄Π°ΠΆΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° .Net языках (Π² Ρ‚ΠΎΠΌ числС ΠΈ Π½Π° C#).
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° 64-разрядных вычислСний, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, позволяСт ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ адрСсноС пространство ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 64-разрядныС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ВСрсия 3.0

Π’ июнС 2004 Π³ΠΎΠ΄Π° АндСрс Π₯СйлсбСрг Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ рассказал Π½Π° сайтС Microsoft ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΡ… языка Π² C#3.0.[13] Π’ сСнтябрС 2005 Π³ΠΎΠ΄Π° Π²Ρ‹ΡˆΠ»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ спСцификации C# 3.0 ΠΈ Π±Π΅Ρ‚Π°-вСрсия C# 3.0, устанавливаСмая Π² Π²ΠΈΠ΄Π΅ дополнСния ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Visual Studio 2005 ΠΈ .NET 2.0. ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ эта вСрсия языка вошла Π² Visual Studio 2008 ΠΈ .NET 3.5.

НовыС возмоТности Π² вСрсии 3.0

Π’ C# 3.0 появились ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ добавлСния ΠΊ языку:

  • ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова select, from, where, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ запросы ΠΈΠ· SQL, XML, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚. ΠΏ. (запрос, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² язык, Language Integrated Query, ΠΈΠ»ΠΈ LINQ)
  • Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° вмСстС с Π΅Π³ΠΎ свойствами:
Customer c = new Customer(); c.Name = "James"; c.Age=30;
ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ
Customer c = new Customer { Name = "James", Age = 30 };
listOfFoo.Where(delegate(Foo x) { return x.size > 10; });
Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ
listOfFoo.Where(x => x.size > 10);
  • Π”Π΅Ρ€Π΅Π²ΡŒΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:
лямбда-выраТСния Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, доступной для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π²ΠΎ врСмя выполнСния, Ρ‚Π΅ΠΌ самым позволяя Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ C#-выраТСния Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, выраТСния SQL).
  • Π’Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠ² локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ: var x = "hello"; вмСсто string x = "hello";
  • БСзымянныС Ρ‚ΠΈΠΏΡ‹: var x = new { Name = "James" };
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΒ β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ класс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова this ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ статичСской Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
public static class StringExtensions
{
  public static int ToInt32(this string val)
  {
    return Int32.Parse(val);
  }
}
// ...
string s = "10";
int x = s.ToInt32();
  • АвтоматичСскиС свойства: компилятор сгСнСрируСт Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ (private) ΠΏΠΎΠ»Π΅ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ аксСссор ΠΈ ΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ для ΠΊΠΎΠ΄Π° Π²ΠΈΠ΄Π°
public string Name { get; private set; }

C# 3.0 совмСстим с C# 2.0 ΠΏΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌΡƒ MSIL-ΠΊΠΎΠ΄Ρƒ; ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² языкС — чисто синтаксичСскиС ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° этапС компиляции. НапримСр, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… запросов LINQ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ бСзымянныС Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹ Π² сочСтании с ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π½Π°Π΄ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ List.FindAll ΠΈ List.RemoveAll.

ВСрсия 4.0

ΠŸΡ€Π΅Π²ΡŒΡŽ C# 4.0 Π±Ρ‹Π»ΠΎ прСдставлСно Π² ΠΊΠΎΠ½Ρ†Π΅ 2008 Π³ΠΎΠ΄Π°, вмСстС с CTP-вСрсиСй Visual Studio 2010.

Visual Basic 10.0 ΠΈ C# 4.0 Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π² Π°ΠΏΡ€Π΅Π»Π΅ 2010 Π³ΠΎΠ΄Π°, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с выпуском Visual Studio 2010.

НовыС возмоТности Π² вСрсии 4.0[14]
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ связывания, для использования:
    • с языками с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (Python, Ruby)
    • с COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ
    • отраТСния (reflection)
    • ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с измСняСмой структурой (DOM). ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово dynamic.
  • Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹
  • НовыС возмоТности COM interop
  • ΠšΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ
  • ΠšΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹ Π² ΠΊΠΎΠ΄Π΅ (Code Contracts)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

dynamic calc = GetCalculator();
int sum = calc.Add(10, 20);  // ДинамичСский Π²Ρ‹Π·ΠΎΠ²
public void SomeMethod(int x, int y = 5, int z = 7);  // ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Β«Hello, World!Β»

НиТС прСдставлСн ΠΊΠΎΠ΄ классичСской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«Hello worldΒ» Π½Π° C# для консольного прилоТСния:

using System;
 
namespace Example
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Hello World!"); // Π’Ρ‹Π²ΠΎΠ΄ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ тСкста Π² консоль
            Console.ReadKey(); // ОТиданиС наТатия клавиши ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ
        }
    }
}

ΠΈ ΠΊΠΎΠ΄ этой ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для прилоТСния Windows Forms:

using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }
        private void OnButtonClick(object sender, EventArgs e) // Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ lbl_hello Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ
        {
            lbl_hello.Text = "Hello, World!";
        }
    }
}

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

БущСствуСт нСсколько Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ C#:

  • РСализация C# Π² Π²ΠΈΠ΄Π΅ компилятора csc.exe Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² состав .NET Framework (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ .NET Micro Framework, .NET Compact Framework ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ Silverlight ΠΈ Windows Phone 7).
  • Π’ составС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rotor (Shared Source Common Language Infrastructure) ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft.
  • ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Mono Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ C# с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.
  • ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ DotGNU Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ компилятор C# с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
  • DotNetAnywhere[15]Β β€” ориСнтированная Π½Π° встраиваСмыС систСмы рСализация CLR, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ практичСски всю ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ C# 2.0.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

  1. ↑ Β«ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ язык Π‘# унаслСдовал свой синтаксис ΠΎΡ‚ C++ ΠΈ Java…» (Π’Ρ€Π΅ΠΉ Нэш Β«C# 2010: ускорСнный курс для профСссионалов» (Β«Accelerated C# 2010Β»)Β β€” М.: Π’ΠΈΠ»ΡŒΡΠΌΡ, 2010.Β β€” Π‘. 592.Β β€” ISBN 978-5-8459-1638-9; стр. 17)
  2. ↑ Β«Π―Π·Ρ‹ΠΊ C# … унаслСдовал ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… возмоТностСй ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ связан с двумя Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСмыми Π² ΠΌΠΈΡ€Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌΠΈ языками — C ΠΈ C++, Π° Ρ‚Π°ΠΊΠΆΠ΅ с языком Java.Β», ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π°Π»Π΅Π΅: «Бвязь ΠΌΠ΅ΠΆΠ΄Ρƒ C# ΠΈ Java Π±ΠΎΠ»Π΅Π΅ слоТная. Оба языка Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ для создания пСрСносимого ΠΊΠΎΠ΄Π°, Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° C ΠΈ C++, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΡ… синтаксис ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль. Однако ΠΌΠ΅ΠΆΠ΄Ρƒ этими языками Π½Π΅Ρ‚ прямой связи, ΠΎΠ½ΠΈ большС ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Π΄Π²ΠΎΡŽΡ€ΠΎΠ΄Π½Ρ‹Ρ… Π±Ρ€Π°Ρ‚ΡŒΠ΅Π², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΊΠΎΠ², Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ.Β» (Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚ Β«C# ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ курс».Β β€” М.: ΠŸΠΈΡ‚Π΅Ρ€. 2003.Β β€” стр. 20).
  3. ↑ Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚ ΠŸΠΎΠ»Π½Ρ‹ΠΉ справочник ΠΏΠΎ Π‘#.Β : ΠŸΠ΅Ρ€. с Π°Π½Π³Π». β€” М.Β : Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌΡ», 2004. β€” 752 с.Β : ΠΈΠ». β€” ΠŸΠ°Ρ€Π°Π». Ρ‚ΠΈΡ‚. Π°Π½Π³Π». ISBN 5-8459-0563-X (рус.) стр. 26-27.
  4. ↑ Kovacs, James C#/.NET History Lesson (September 7, 2007). Архивировано ΠΈΠ· пСрвоисточника 21 августа 2011. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 23 ΠΌΠ°Ρ€Ρ‚Π° 2011.
  5. ↑ Microsoft C# FAQ. Microsoft.(нСдоступная ссылка — история) ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 25 ΠΌΠ°Ρ€Ρ‚Π° 2008.(нСдоступная ссылка — история)
  6. ↑ C# Language Specification.Β β€” 4th.Β β€” ECMA International, 2006.
  7. ↑ Visual C#.net Standard (JPEG). Microsoft (September 4, 2003). Архивировано ΠΈΠ· пСрвоисточника 21 августа 2011. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 18 июня 2009.
  8. ↑ Standard ECMA-334 C# Language Specification, 4rd edition (June 2006)
  9. ↑ ISO/IEC 23270:2003, Information technologyΒ β€” C# Language Specification
  10. ↑ БпСцификация ΠΏΠΎ Microsoft C# 2.0 содСрТит описаниС лишь Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй вСрсии 2.0. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ вСрсии описаны Π² спСцификации 1.2, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅.
  11. ↑ Для вСрсий языка C# 3.0, 4.0 ΠΈ 5.0 ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… ECMA ΠΈΠ»ΠΈ ISO/IEC спСцификаций.
  12. ↑ Differences Between C++ Templates and C# Generics (C# Programming Guide)
  13. ↑ MSDN News
  14. ↑ C# Future
  15. ↑ Dot Net Anywhere

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

  • Π”ΠΆΠΎΠ·Π΅Ρ„ Албахари, Π‘Π΅Π½ Албахари C# 5.0. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ. ПолноС описаниС языка = C# 5.0 in a Nutshell: The Definitive Reference.Β β€” М.: Β«Π’ΠΈΠ»ΡŒΡΠΌΡΒ», 2013.Β β€” 1008 с.Β β€” ISBN 978-5-8459-1819-2
  • Π­Π½Π΄Ρ€ΡŽ ВроСлсСн. Π―Π·Ρ‹ΠΊ программирования C# 2010 ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET 4.0 = Pro C# 2010 and the .NET 4.0 Platform.Β β€” 5-Π΅ ΠΈΠ·Π΄.Β β€” М.: Π’ΠΈΠ»ΡŒΡΠΌΡ, 2010.Β β€” Π‘.Β 1392.Β β€” ISBN 978-5-8459-1682-2
  • Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚. C# 4.0: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство = C# 4.0 The Complete Reference.Β β€” М.: Β«Π’ΠΈΠ»ΡŒΡΠΌΡΒ», 2010.Β β€” Π‘.Β 1056.Β β€” ISBN 978-5-8459-1684-6
  • Π”ΠΆΠΎΠ½ Π‘ΠΊΠΈΡ‚. C#: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для профСссионалов, 2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ = C# in Depth, 2nd Edition.Β β€” М.: Β«Π’ΠΈΠ»ΡŒΡΠΌΡΒ», 2011.Β β€” 544 с.Β β€” ISBN 978-5-8459-1555-9
  • ΠšΡ€ΠΈΡΡ‚ΠΈΠ°Π½ НСйгСл, ΠšΠ°Ρ€Π»ΠΈ Уотсон ΠΈ Π΄Ρ€. Visual C# 2010: ΠΏΠΎΠ»Π½Ρ‹ΠΉ курс = Beginning Microsoft Visual C# 2010.Β β€” М.: Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΈΠΊΠ°, 2010.Β β€” ISBN 978-5-8459-1699-0
  • ΠšΡ€ΠΈΡΡ‚ΠΈΠ°Π½ НСйгСл, Π‘ΠΈΠ»Π» ИвьСн, Π”ΠΆΠ΅ΠΉ Π“Π»ΠΈΠ½Π½, ΠšΠ°Ρ€Π»ΠΈ Уотсон, ΠœΠΎΡ€Π³Π°Π½ Π‘ΠΊΠΈΠ½Π½Π΅Ρ€. C# 4: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET 4 для профСссионалов = Professional C# 4 and .NET 4.Β β€” М.: Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΈΠΊΠ°, 2010.Β β€” Π‘.Β 1440.Β β€” ISBN 978-5-8459-1656-3

Бсылки

Β ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ этого ΡˆΠ°Π±Π»ΠΎΠ½Π°Β Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ ISO
ΠŸΠ΅Ρ€Π΅Ρ‡Π½ΠΈ: Β ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ стандартов Π˜Π‘ΠžΒ β€’ ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Ρ€ΠΎΠΌΠ°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ ISOΒ β€’ ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ стандартов IEC
ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ: Β ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ:Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ ISOΒ β€’ ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ:ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ OSI
1
ΠΏΠΎ
9999
1Β β€’ 2Β β€’ 3Β β€’ 4Β β€’ 5Β β€’ 6Β β€’ 7Β β€’ 9Β β€’ 16Β β€’ 31 (-0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13)Β β€’ 128Β β€’ 216Β β€’ 217Β β€’ 226Β β€’ 228Β β€’ 233Β β€’ 259Β β€’ 269Β β€’ 296Β β€’ 302Β β€’ 306Β β€’ 428Β β€’ 639 (-1, -2, -3, -5, -6)Β β€’ 646Β β€’ 690Β β€’ 732Β β€’ 764Β β€’ 843Β β€’ 898Β β€’ 1000Β β€’ 1004Β β€’ 1007Β β€’ 1073-1Β β€’ 1413Β β€’ 1538Β β€’ 1745Β β€’ 2014Β β€’ 2015Β β€’ 2022Β β€’ 2108Β β€’ 2145Β β€’ 2146Β β€’ 2281Β β€’ 2709Β β€’ 2711Β β€’ 2788Β β€’ 3029Β β€’ 3103Β β€’ 3166 (-1, -2, -3)Β β€’ 3297Β β€’ 3307Β β€’ 3602Β β€’ 3864Β β€’ 3901Β β€’ 3977Β β€’ 4031Β β€’ 4157Β β€’ 4217Β β€’ 5218Β β€’ 5775Β β€’ 5776Β β€’ 5964Β β€’ 6166Β β€’ 6344Β β€’ 6346Β β€’ 6425Β β€’ 6429Β β€’ 6438Β β€’ 6523Β β€’ 6709Β β€’ 7001Β β€’ 7002Β β€’ 7098Β β€’ 7185Β β€’ 7388Β β€’ 7498Β β€’ 7736Β β€’ 7810Β β€’ 7811Β β€’ 7812Β β€’ 7813Β β€’ 7816Β β€’ 8000Β β€’ 8217Β β€’ 8571Β β€’ 8583Β β€’ 8601Β β€’ 8632Β β€’ 8652Β β€’ 8691Β β€’ 8807Β β€’ 8820-5Β β€’ 8859 (-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16)Β β€’ 8879Β β€’ 9000Β β€’ 9075Β β€’ 9126Β β€’ 9241Β β€’ 9362Β β€’ 9407Β β€’ 9506Β β€’ 9529Β β€’ 9564Β β€’ 9594Β β€’ 9660Β β€’ 9897Β β€’ 9945Β β€’ 9984Β β€’ 9985Β β€’ 9995
10000
ΠΏΠΎ
19999
10006Β β€’ 10118-3Β β€’ 10160Β β€’ 10161Β β€’ 10165Β β€’ 10179Β β€’ 10206Β β€’ 10303Β β€’ 10303-11Β β€’ 10303-21Β β€’ 10303-22Β β€’ 10303-238Β β€’ 10303-28Β β€’ 10383Β β€’ 10487Β β€’ 10585Β β€’ 10589Β β€’ 10646Β β€’ 10664Β β€’ 10746Β β€’ 10861Β β€’ 10957Β β€’ 10962Β β€’ 10967Β β€’ 11073Β β€’ 11170Β β€’ 11179Β β€’ 11404Β β€’ 11544Β β€’ 11783Β β€’ 11784Β β€’ 11785Β β€’ 11801Β β€’ 11898Β β€’ 11940Β β€’ 11941Β β€’ 11941 (TR)Β β€’ 11992Β β€’ 12006Β β€’ 12164Β β€’ 12182:1998Β β€’ 12207:1995Β β€’ 12207:2008Β β€’ 12234-2Β β€’ 13211 (-1, -2)Β β€’ 13216Β β€’ 13250Β β€’ 13399Β β€’ 13406-2Β β€’ 13407Β β€’ 13450Β β€’ 13485Β β€’ 13490Β β€’ 13567Β β€’ 13568Β β€’ 13584Β β€’ 13616Β β€’ 14000Β β€’ 14031Β β€’ 14396Β β€’ 14443Β β€’ 14496-10Β β€’ 14496-14Β β€’ 14644 (-1, -2, -3, -4, -5, -6, -7, -8, -9)Β β€’ 14649Β β€’ 14651Β β€’ 14698Β β€’ 14698-2Β β€’ 14750Β β€’ 14882Β β€’ 14971Β β€’ 15022Β β€’ 15189Β β€’ 15288Β β€’ 15291Β β€’ 15292Β β€’ 15408Β β€’ 15444Β β€’ 15445Β β€’ 15438Β β€’ 15504Β β€’ 15511Β β€’ 15686Β β€’ 15693Β β€’ 15706Β β€’ 15706-2Β β€’ 15707Β β€’ 15897Β β€’ 15919Β β€’ 15924Β β€’ 15926Β β€’ 15926 WIPΒ β€’ 15930Β β€’ 16023Β β€’ 16262Β β€’ 16750Β β€’ 17024Β β€’ 17025Β β€’ 17369Β β€’ 17799Β β€’ 18000Β β€’ 18004Β β€’ 18014Β β€’ 18245Β β€’ 18629Β β€’ 18916Β β€’ 19005Β β€’ 19011Β β€’ 19092-1Β β€’ 19092-2Β β€’ 19114Β β€’ 19115Β β€’ 19439Β β€’ 19501:2005Β β€’ 19752Β β€’ 19757Β β€’ 19770Β β€’ 19775-1Β β€’ 19794-5
20000+20000Β β€’ 20022Β β€’ 21000Β β€’ 21047Β β€’ 21827:2002Β β€’ 22000Β β€’ 23008-2Β β€’ 23270Β β€’ 23360Β β€’ 24613Β β€’ 24707Β β€’ 25178Β β€’ 26000Β β€’ 26300Β β€’ 26324Β β€’ 27000 seriesΒ β€’ 27000Β β€’ 27001Β β€’ 27002Β β€’ 27003Β β€’ 27004Β β€’ 27005Β β€’ 27006Β β€’ 27007Β β€’ 27729Β β€’ 27799Β β€’ 29199-2Β β€’ 29500Β β€’ 31000Β β€’ 32000Β β€’ 38500Β β€’ 42010Β β€’ 50001Β β€’ 80000
Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅: ВсС ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с Β«ISOΒ»

Π‘++ — это… Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π‘++?

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ STLport[2], основанный Π½Π° SGI STL, осущСствляСт постоянноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ STL, IOstream ΠΈ строковых классов. НСкоторыС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ частных ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… конструкторских Π·Π°Π΄Π°Ρ‡. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ компиляторов Π‘ΠΈ++ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ поставляСт ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° являСтся ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ стандарта ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ особСнности языка

Π‘ΠΈ++ добавляСт ΠΊ Π‘ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ возмоТности. Он Π²Π²ΠΎΠ΄ΠΈΡ‚ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ‚Ρ€ΠΈ самых Π²Π°ΠΆΠ½Ρ‹Ρ… свойства ООП: ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ.

БущСствуСт Π΄Π²Π° значСния слова класс. Π’ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС класс — это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚ΠΈΠΏ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ с использованиСм ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов class, struct ΠΈΠ»ΠΈ union. Π’ ΡƒΠ·ΠΊΠΎΠΌ смыслС класс — это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚ΠΈΠΏ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ с использованиСм ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова class.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ способом ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π‘ΠΈ++ ΡΠ²Π»ΡΡŽΡ‚ΡΡ классы. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° структура (struct) языка Π‘ΠΈ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², класс (class) Π‘ΠΈ++ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-Ρ‡Π»Π΅Π½ΠΎΠ² (member functions). Π§Π»Π΅Π½Ρ‹ класса Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ, public), Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΌΠΈ (protected) ΠΈ собствСнными (Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ, ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ, private). Π’ Π‘ΠΈ++ Ρ‚ΠΈΠΏ структура Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Ρ‚ΠΈΠΏΡƒ класс, ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‡Π»Π΅Π½Ρ‹ ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы Ρƒ структуры ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅, Π° Ρƒ класса — собствСнныС.

Π‘ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ (ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ) Ρ‡Π»Π΅Π½Π°ΠΌΠΈ класса ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ снаруТи класса всё, Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. К Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ (ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ) Ρ‡Π»Π΅Π½Π°ΠΌ нСльзя ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ·Π²Π½Π΅ класса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… класса. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ‚Π°ΠΊΠΎΠ³ΠΎ обращСния Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции. К Ρ‚Π°ΠΊΠΈΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ класса (Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π΄Ρ€ΡƒΠ·ΡŒΡ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ классов-Π΄Ρ€ΡƒΠ·Π΅ΠΉ; ΠΎ понятии Π΄Ρ€ΡƒΠ·Π΅ΠΉ Π² C++ см. Π½ΠΈΠΆΠ΅). Помимо ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ‡Π»Π΅Π½ΠΎΠ² класса, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Π΅Β β€” это Ρ‡Π»Π΅Π½Ρ‹, доступныС содСрТащСму ΠΈΡ… классу, Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ ΠΎΡ‚ Π½Π΅Π³ΠΎ классам. Вакая Π·Π°Ρ‰ΠΈΡ‚Π° Ρ‡Π»Π΅Π½ΠΎΠ² называСтся инкапсуляциСй.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, Π°Π²Ρ‚ΠΎΡ€ класса ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ свои Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ использования. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½Π° Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»Π°ΡΡŒ для облСгчСния совмСстной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ классов. ИмСлось Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ способа хранСния Π΄Π°Π½Π½Ρ‹Ρ…, Ссли ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ собствСнныС, Π½Π΅ трСбуСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² классах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΉ класс. НапримСр, Ссли Π² старой вСрсии класса Π΄Π°Π½Π½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Π² Π²ΠΈΠ΄Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ списка, Π° Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии — Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π°, Ρ‚Π΅ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ написаны Π΄ΠΎ измСнСния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° хранСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π΅ потрСбуСтся, Ссли Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΌΠΈ (Π² послСднСм случаС — Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ классы Π½Π΅ Π±Ρ‹Π»ΠΈ классами-наслСдниками), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… этих классов Π½Π΅ ΠΌΠΎΠ³ Π±Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΆΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΎΠ²Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ доступа operator [] ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ ΠΊΠ°ΠΊ такая стандартная функция.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, структуру Array ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

class Array {
public:
    void Alloc(int new_len);
    void Free();
    inline double Elem(int i);
    inline void ChangeElem(int i, double x);
protected:
    int len;
    double* val;
};
 
void Array::Alloc(int new_len) 
    {if (len>0) Free(); len=new_len; val=new double[new_len];}
void Array::Free() {delete [] val; len=0;}
inline double Array::Elem(int i) 
    {assert(i>=0 && i<len ); return val[i];}
inline void Array::ChangeElem(int i, double x) 
    {assert(i>=0 && i<len); val[i]=x;}

И далСС

Array a;
a.Alloc(10);
a.ChangeElem(3, 2.78);
double b = a.Elem(3);
a.Free();

Π—Π΄Π΅ΡΡŒ массив a ΠΈΠΌΠ΅Π΅Ρ‚ 4 ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Π° ΠΈ 2 Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… поля. ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ inline ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ подсказку компилятору, Ρ‡Ρ‚ΠΎ вмСсто Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅Ρ‘ ΠΊΠΎΠ΄ слСдуСт ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ‹Π·ΠΎΠ²Π°, Ρ‡Π΅ΠΌ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ большСй эффСктивности.

ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Ρ‚Π΅Π»Π΅ класса

Π’ Ρ‚Π΅Π»Π΅ класса ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ всю Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС ΠΎΠ½Π° считаСтся встраиваСмой (inline), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

class Array {
public:
    void Alloc(int _len) 
        {if (len==0) Free(); len=_len; val=new double[len];}

ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ дСструкторы

Однако Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π΅ Ρ€Π΅ΡˆΠ΅Π½Π° ваТная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Alloc ΠΈ Free ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½Π°Π΄ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Другая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Β β€” ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² язык Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ конструкторы ΠΈ дСструкторы. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ вызываСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° создаётся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°; дСструктор — ΠΏΡ€ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠŸΡ€ΠΈ прСобразованиях Ρ‚ΠΈΠΏΠΎΠ² с участиСм экзСмпляров классов Ρ‚ΠΎΠΆΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ конструкторы ΠΈ дСструкторы.

Π‘ конструкторами ΠΈ дСструктором класс выглядит Ρ‚Π°ΠΊ:

class Array {
public:
    Array() : len(0), val(NULL) {}
    Array(int _len) : len(_len) {val = new double[_len];}
    Array(const Array& a);
    ~Array() { Free(); }
    inline double Elem(int i);
    inline void ChangeElem(int i, double x);
protected:
    void Alloc(int _len);
    void Free();
    int len;
    double* val;
};
 
Array::Array(const Array& a) : len(a.len)
{
    val = new double[len];
    for (int i=0; i<len; i++)
        val[i] = a.val[i];
}

Π—Π΄Π΅ΡΡŒ Array::ArrayΒ β€” конструктор, Π° Array::~ArrayΒ β€” дСструктор. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ копирования (copy constructor) Array::Array(const Array&) вызываСтся ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Array нСльзя ΠΈΡΠΏΠΎΡ€Ρ‚ΠΈΡ‚ΡŒ: ΠΊΠ°ΠΊ Π±Ρ‹ ΠΌΡ‹ Π΅Π³ΠΎ Π½ΠΈ создавали, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΌΡ‹ Π½ΠΈ Π΄Π΅Π»Π°Π»ΠΈ, Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ конструктор вызываСтся автоматичСски. ВсС опасныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с указатСлями спрятаны Π² Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Array a(5); // вызываСтся Array::Array(int)
Array b;    // вызываСтся Array::Array()
Array c(a); // вызываСтся Array::Array(const Array&)
Array d=a;  // Ρ‚ΠΎ ΠΆΠ΅ самоС
b=c;        // происходит Π²Ρ‹Π·ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° =
            // Ссли ΠΎΠ½ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ (ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС), Ρ‚ΠΎ вызываСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
            // осущСствляСт ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ΄ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠΎΡ‡Π»Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ нСстатичСских Ρ‡Π»Π΅Π½ΠΎΠ²-Π΄Π°Π½Π½Ρ‹Ρ….
            // ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ конструктор ΠΊΠΎΠΏΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠΏΠ°Ρ€Π½ΠΎ

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new Ρ‚ΠΎΠΆΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструкторы, Π° deleteΒ β€” дСструкторы.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс ΠΈΠΌΠ΅Π΅Ρ‚ нСявно ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ конструктор Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ конструктор, ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания ΠΈ дСструктор.

Класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ конструкторов (с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²), Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ дСструктор (Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²).

Π”Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-Ρ‡Π»Π΅Π½ΠΎΠ²

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ опСрациями:

class Array {
...
    inline double &operator[] (int n)
    {
         return val[n];
    }

И далСС

Array a(10);
...
double b = a[5];

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ (ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΈ) ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ const

class Array {
...
    inline double operator[] (int n) const;

Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€Π°Π²Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ поля класса (ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠΎΠ»Π΅ΠΉ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ mutable). Если ΠΎΠ½ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, компилятор Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π΄Π°Ρ‚ΡŒ сообщСниС ΠΎΠ± ошибкС.

НаслСдованиС

Для создания классов с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ вводят наслСдованиС. Класс-наслСдник ΠΈΠΌΠ΅Π΅Ρ‚ поля ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²Π° ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ собствСнным (private) полям ΠΈ функциям Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. Π’ этом ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ собствСнными ΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ.

Класс-наслСдник ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ свои поля ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, конструктор наслСдника Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструктор Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Π° Π·Π°Ρ‚Π΅ΠΌ конструкторы нСстатичСских Ρ‡Π»Π΅Π½ΠΎΠ²-Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ экзСмплярами классов. ДСструктор Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. Π”Ρ€ΡƒΠ³ΠΈΠ΅ конструкторы приходится ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π·Π°Π½ΠΎΠ²ΠΎ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ конструктора Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.

class ArrayWithAdd : public Array {
    ArrayWithAdd(int n) : Array(n) {}
    ArrayWithAdd() : Array() {}
    ArrayWithAdd(const Array& a) : Array(a) {}
    void Add(const Array& a);
};

НаслСдник — это большС Ρ‡Π΅ΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс, поэтому, Ссли наслСдованиС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅, Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

НаслСдованиС Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ, Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΌ ΠΈ собствСнным. ΠŸΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΌ наслСдовании, ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ свой статус, Π° ΠΊ собствСнным Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π΄Π°ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ наслСдника. Π—Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΠ΅ наслСдованиС отличаСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Ρ‘ΠΌ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ наслСдника. ΠŸΡ€ΠΈ собствСнном наслСдовании всС Ρ‡Π»Π΅Π½Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса становятся собствСнными Ρ‡Π»Π΅Π½Π°ΠΌΠΈ класса-наслСдника. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅. Класс-наслСдник Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… собствСнными с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ собствСнного наслСдования. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ΅ наслСдованиС встрСчаСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π°Ρ‰Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ….

Класс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ наслСдником Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов. Π­Ρ‚ΠΎ называСтся мноТСствСнным наслСдованиСм. Π’Π°ΠΊΠΎΠΉ класс ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ полями ΠΈ функциями-Ρ‡Π»Π΅Π½Π°ΠΌΠΈ всСх Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠΎΠ². НапримСр, класс FlyingCat (Π›Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΉΠšΠΎΡ‚) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ наслСдником классов Cat (ΠšΠΎΡ‚) ΠΈ FlyingAnimal (Π›Π΅Ρ‚Π°ΡŽΡ‰Π΅Π΅Π–ΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅)

class Cat {
    ...
    void Purr();
    ...
};
class FlyingAnimal {
    ...
    void Fly();
    ...
};
class FlyingCat : public Cat, public FlyingAnimal {
    ...
    PurrAndFly() {Purr(); Fly();}
    ...
};

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ называСтся ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ наслСдником Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-Ρ‡Π»Π΅Π½ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

class Figure {
    ...
    void Draw() const;
    ...
};
 
class Square : public Figure {
    ...
    void Draw() const;
    ...
};
 
class Circle : public Figure {
    ...
    void Draw() const;
    ...
};

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, какая ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π°Β β€” Circle::Draw(), Square::Draw() ΠΈΠ»ΠΈ Figure::Draw(), опрСдСляСтся Π²ΠΎ врСмя компиляции. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

Figure* x = new Circle(0,0,5);
x->Draw();

Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° Figure::Draw(), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ xΒ β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Figure. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ называСтся статичСским.

Но Π² C++ Π΅ΡΡ‚ΡŒ ΠΈ динамичСский ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΊΠΎΠ³Π΄Π° вызываСмая функция опрСдСляСтся Π²ΠΎ врСмя выполнСния. Для этого Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

class Figure {
    ...
    virtual void Draw() const;
    ...
};
 
class Square : public Figure {
    ...
    virtual void Draw() const;
    ...
};
 
class Circle : public Figure {
    ...
    virtual void Draw() const;
    ...
};
 
Figure* figures[10];
figures[0] = new Square(1, 2, 10);
figures[1] = new Circle(3, 5, 8);
...
for (int i = 0; i < 10; i++)
    figures[i]->Draw();

Π’ этом случаС для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° Square::Draw() ΠΈΠ»ΠΈ Circle::Draw() Π² зависимости ΠΎΡ‚ Π²ΠΈΠ΄Π° Ρ„ΠΈΠ³ΡƒΡ€Ρ‹.

Чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ называСтся функция-Ρ‡Π»Π΅Π½, которая объявлСна со спСцификатором = 0:

class Figure {
    ...
    virtual void Draw() const = 0;
);

Чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ функция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ оставлСна Π±Π΅Π· опрСдСлСния, ΠΊΡ€ΠΎΠΌΠ΅ случая, ΠΊΠΎΠ³Π΄Π° трСбуСтся произвСсти Π΅Ρ‘ Π²Ρ‹Π·ΠΎΠ². Абстрактным классом называСтся Ρ‚Π°ΠΊΠΎΠΉ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½Π° чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ функция-Ρ‡Π»Π΅Π½. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΊΠΈΡ… классов ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ. АбстрактныС классы часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ интСрфСйсы.

Π”Ρ€ΡƒΠ·ΡŒΡ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π΄Ρ€ΡƒΠ·ΡŒΡΒ β€” это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ функциями-Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ΠΈ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ доступ ΠΊ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΌ ΠΈ собствСнным полям ΠΈ функциям-Ρ‡Π»Π΅Π½Π°ΠΌ класса. Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ описаны Π² Ρ‚Π΅Π»Π΅ класса ΠΊΠ°ΠΊ friend. НапримСр:

class Matrix {
    ...
    friend Matrix Multiply(Matrix m1, Matrix m2);
    ...
};
 
Matrix Multiply(Matrix m1, Matrix m2) {
    ...
}

Π—Π΄Π΅ΡΡŒ функция Multiply ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ полям ΠΈ функциям-Ρ‡Π»Π΅Π½Π°ΠΌ класса Matrix.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ классы-Π΄Ρ€ΡƒΠ·ΡŒΡ. Если класс AΒ β€” Π΄Ρ€ΡƒΠ³ класса B, Ρ‚ΠΎ всС Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ полям ΠΈ функциям Ρ‡Π»Π΅Π½Π°ΠΌ класса B. НапримСр:

class Matrix {
    ...
    friend class Vector;
    ...
};

Однако Π² Π‘++ Π½Π΅ дСйствуСт ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Β«Π΄Ρ€ΡƒΠ³ ΠΌΠΎΠ΅Π³ΠΎ Π΄Ρ€ΡƒΠ³Π°Β β€” ΠΌΠΎΠΉ Π΄Ρ€ΡƒΠ³Β».

По стандарту C++03 Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π² доступа ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅Π³ΠΎ класса ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объявлСн Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ (послСднСС слСдуСт ΠΈΠ· опрСдСлСния Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Π΄Ρ€ΡƒΠ³ ΠΊΠ°ΠΊ Π½Π΅Ρ‡Π»Π΅Π½Π° класса). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённыС компиляторы Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‚ ΠΎΠ±Π° эти ΠΏΡ€Π°Π²ΠΈΠ»Π° (ΠΏΠΎ всСй видимости, Π²Π²ΠΈΠ΄Ρƒ совокупной странности этих ΠΏΡ€Π°Π²ΠΈΠ»).

Π‘ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ стандарт языка Π±Ρ‹Π» принят Π² 2003 Π³ΠΎΠ΄Ρƒ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ вСрсия стандарта носит Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ C++0x.

Π‘ΠΈ++ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ соврСмСнным трСбованиям. Одна ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏ, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ…ΡΡ языком Π‘ΠΈ++ Π² Π΅Π³ΠΎ соврСмСнном Π²ΠΈΠ΄Π΅ ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Ρƒ ΠΏΠΎ стандартизации Π‘ΠΈ++ совСты ΠΏΠΎ Π΅Π³ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽΒ β€” это Boost. НапримСр, ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ этой Π³Ρ€ΡƒΠΏΠΏΡ‹Β β€” ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ возмоТностСй языка ΠΏΡƒΡ‚Ρ‘ΠΌ добавлСния Π² Π½Π΅Π³ΠΎ особСнностСй мСтапрограммирования.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π‘ΠΈ++ Π½Π΅ описываСт способы имСнования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности, связанныС с дСталями Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ нСсовмСстимым ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, созданный Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ компиляторами. Однако для этого Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌΠΈ Π»ΠΈΡ†Π°ΠΌΠΈ создано мноТСство стандартов для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ (ΠΏΠΎ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° врСмя написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ) срСди компиляторов Π‘ΠΈ++ всё Π΅Ρ‰Ρ‘ продолТаСтся Π±ΠΈΡ‚Π²Π° Π·Π° ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ стандарта Π‘ΠΈ++, особСнно Π² области ΡˆΠ°Π±Π»ΠΎΠ½ΠΎΠ²Β β€” части языка, совсСм Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ΠΎΠΌ стандартизации.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово export

Одной ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ прСткновСния Π² этом вопросС являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово export, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ для раздСлСния объявлСния ΠΈ опрСдСлСния шаблонов.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ компилятором, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ export Π² ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ…, стал Comeau C++ Π² Π½Π°Ρ‡Π°Π»Π΅ 2003 Π³ΠΎΠ΄Π° (спустя ΠΏΡΡ‚ΡŒ Π»Π΅Ρ‚ послС Π²Ρ‹Ρ…ΠΎΠ΄Π° стандарта). Π’ 2004 Π³ΠΎΠ΄Ρƒ Π±Π΅Ρ‚Π°-вСрсия компилятора Borland C++ Builder X Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Ρ‡Π°Π»Π° Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.

Оба этих компилятора основаны Π½Π° внСшнСм интСрфСйсС EDG. Π”Ρ€ΡƒΠ³ΠΈΠ΅ компиляторы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Microsoft Visual C++ ΠΈΠ»ΠΈ GCC (GCC 3.4.4), Π²ΠΎΠΎΠ±Ρ‰Π΅ этого Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚. Π“Π΅Ρ€Π± Π‘Π°Ρ‚Ρ‚Π΅Ρ€Β (Π°Π½Π³Π».), ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π° ΠΏΠΎ стандартизации Π‘ΠΈ++, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΡƒΠ±Ρ€Π°Ρ‚ΡŒ export ΠΈΠ· Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… вСрсий стандарта ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Ρ… слоТностСй Π² ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ впослСдствии ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΅Π³ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ.

Из списка Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанных с шаблонами, ΠΌΠΎΠΆΠ½ΠΎ привСсти вопросы конструкций частичной спСциализации шаблонов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈΡΡŒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π»Π΅Ρ‚ послС Π²Ρ‹Ρ…ΠΎΠ΄Π° стандарта Π‘ΠΈ++.

Π‘ΠΈ++ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π‘ΠΈ

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ большая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π‘ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ справСдлива ΠΈ для Π‘ΠΈ++, Π‘ΠΈ++ Π½Π΅ являСтся надмноТСством Π‘ΠΈ ΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² сСбя. БущСствуСт ΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π²Π΅Ρ€Π½Ρ‹ΠΉ для Π‘ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅Π²Π΅Ρ€Π΅Π½ для Π‘ΠΈ++. Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π‘ΠΈ, Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ Π‘ΠΈ для ООП, ΠΊΠ°ΠΊ Ρ€Π°Π· ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ надмноТСством Π‘ΠΈ.

НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π‘ΠΈ, Π½ΠΎ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π‘ΠΈ++:

typedef struct mystr {
    int a;
    int b;
} mystr;

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π‘ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ структур (Ρ‚Π΅Π³ΠΈ структур), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈ описании структуры Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ структуры, ΡΠ²Π»ΡΡŽΡ‚ΡΡ сущностями ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ обособлСнноС пространство ΠΈΠΌΡ‘Π½, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² Π‘ΠΈ++ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ структуры прСдставляСт собой попросту Π΅Ρ‘ Ρ‚ΠΈΠΏ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² языкС Π‘ΠΈ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ структуру mystr ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ mystr, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² Π‘ΠΈ++ этот ΠΆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ воспринят ΠΊΠ°ΠΊ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π΄Π²Π°ΠΆΠ΄Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏ с ΠΈΠΌΠ΅Π½Π΅ΠΌ mystr.

Π”Ρ€ΡƒΠ³ΠΈΠΌ источником нСсовмСстимости ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова. Π’Π°ΠΊ, описаниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

являСтся Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ для Π‘ΠΈ, Π½ΠΎ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΌ для Π‘ΠΈ++, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ слово try являСтся Π² Π‘ΠΈ++ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ различия. НапримСр, Π‘ΠΈ++ Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main() Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² Π‘ΠΈ это дСйствиС ΠΏΡ€Π°Π²ΠΎΠΌΠ΅Ρ€Π½ΠΎ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π‘ΠΈ++ Π±ΠΎΠ»Π΅Π΅ строг Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вопросах; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ½ Π½Π΅ допускаСт нСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ нСсвязанными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ΄, Π²Π΅Ρ€Π½Ρ‹ΠΉ для ΠΎΠ±ΠΎΠΈΡ… языков, ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, компилятором ΠΊΠ°ΠΊΠΎΠ³ΠΎ языка ΠΎΠ½ оттранслирован. НапримСр, Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Β«Π‘Β», Ссли компилируСтся компилятором Π‘ΠΈ, ΠΈ Β«Π‘++» — Ссли компилятором Π‘ΠΈ++. Π’Π°ΠΊ происходит ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ константы Π² Π‘ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ‘a’) ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ int, Π° Π² Π‘ΠΈ++Β β€” Ρ‚ΠΈΠΏ char, Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ этих Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ.

#include <stdio.h>
 
int main()
{
    printf("%s\n", (sizeof('a') == sizeof(char)) ? "C++" : "C");
    return 0;
}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π‘ΠΈ++

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„–Β 1

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ. Она Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Она состоит ΠΈΠ· основного ΠΏΠΎΡ‚ΠΎΠΊΠ°: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main(), которая ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ Π½Π°Ρ‡Π°Π»Π° выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ΠΈ++.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π‘ΠΈ++ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ функция main() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»Π° Ρ‚ΠΈΠΏ int. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main(), Π½Π΅ соотвСтствуСт стандарту Π‘ΠΈ++.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main(). Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΎΠ½ΠΎ интСрпрСтируСтся ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ 0 ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main() ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ΠΈ++ с ошибкой Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ обозначаСтся ΠΏΡƒΡ‚Ρ‘ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ значСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„–Β 2

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Π°.

Π’ Π‘ΠΈ++, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main(), Ρ‚ΠΎ это эквивалСнтно return 0;. Π­Ρ‚ΠΎ Π½Π΅Π²Π΅Ρ€Π½ΠΎ для любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΡ€ΠΎΠΌΠ΅ main().

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„–Β 3

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Hello World, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ это Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚ΠΎΠ΅ сообщСниС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

#include <iostream> // это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для std::cout ΠΈ std::endl
 
int main()
{
    std::cout << "Hello, world!" << std::endl;
}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„–Β 4

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Π‘ΠΈ++ позволяСт Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ простым способом ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт ΠΊΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ использованиС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ шаблонов (STL).

#include <iostream>   // для использования std::cout
#include <vector>     // для std::vector<>
#include <map>        // для std::map<> и std::pair<>
#include <algorithm>  // для std::for_each()
#include <string>     // для std::string
 
using namespace std;  // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ пространство ΠΈΠΌΡ‘Π½ "std"
 
void display_item_count(pair< string const, vector<string> > const& person) {
   // person - это ΠΏΠ°Ρ€Π° Π΄Π²ΡƒΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: person.first - это Π΅Π³ΠΎ имя,
   // person.second - это список Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² (Π²Π΅ΠΊΡ‚ΠΎΡ€ строк)
   cout << person.first << " is carrying " << person.second.size() << " items" << endl;
}
 
int main()
{
   // объявляСм ΠΊΠ°Ρ€Ρ‚Ρƒ со строковыми ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² строк
   map< string, vector<string> > items;
 
   // Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² эту ΠΊΠ°Ρ€Ρ‚Ρƒ ΠΏΠ°Ρ€Ρƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈ Π΄Π°Π΄ΠΈΠΌ ΠΈΠΌ нСсколько ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ²
   items["Anya"].push_back("scarf");
   items["Dimitri"].push_back("tickets");
   items["Anya"].push_back("puppy");
 
   // ΠŸΠ΅Ρ€Π΅Π±Π΅Ρ€Ρ‘ΠΌ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅
   for_each(items.begin(), items.end(), display_item_count);
}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для простоты ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° использования пространства ΠΈΠΌΡ‘Π½, Π² настоящСй ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Π΅Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²:

#include <vector>
 
int main()
{
    using std::vector;
 
    vector<int> my_vector;
}

Π—Π΄Π΅ΡΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π° Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ ΡˆΠ°Π½ΡΡ‹ столкновСний ΠΈΠΌΡ‘Π½ (это ΠΈ стало ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ввСдСния Π² язык пространств ΠΈΠΌΡ‘Π½). ИспользованиС объявлСний, ΡΠ»ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π½Ρ‹Π΅ пространства ΠΈΠΌΡ‘Π½ Π² ΠΎΠ΄Π½ΠΎ, Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Π΅Ρ‚ саму ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ пространства ΠΈΠΌΡ‘Π½.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ C++ с языками Java ΠΈ C#

ЦСлью создания C++ Π±Ρ‹Π»ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ возмоТностСй Π‘ΠΈ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённого языка систСмного программирования. ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния, C++ унаслСдовал мноТСство Π½Π΅ самых Π»ΡƒΡ‡ΡˆΠΈΡ…, с тСорСтичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, особСнностСй Π‘ΠΈ. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… придСрТивался Π°Π²Ρ‚ΠΎΡ€ языка, ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ нСдостатки C++.

Π’ области ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ программирования Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ C++ стал Π΅Π³ΠΎ язык-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ, ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»Π° язык C#, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ C++ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Java. Π’ дальнСйшСм появился язык Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Π•Ρ‰Ρ‘ ΠΏΠΎΠ·ΠΆΠ΅ появилась ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° объСдинСния эффСктивности C++ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ C#Β β€” Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ язык D, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ признания.

Java ΠΈ C++ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π΄Π²Π° языка-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° Π‘ΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сообраТСний ΠΈ ΠΏΠΎΡˆΠ΅Π΄ΡˆΠΈΡ…, вслСдствиС этого, ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ путям. Π’ этой связи прСдставляСт интСрСс сравнСниС Π΄Π°Π½Π½Ρ‹Ρ… языков (всё, сказанноС Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎ Java, ΠΌΠΎΠΆΠ½ΠΎ с Ρ€Π°Π²Π½Ρ‹ΠΌ успСхом отнСсти ΠΊ языкам C# ΠΈ Nemerle, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² рассматриваСмых дСталях эти языки ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ лишь внСшнС).

Бинтаксис 
C++ сохраняСт ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с C, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Java сохраняСт внСшнСС ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ C ΠΈ C++, Π½ΠΎ, Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, сильно отличаСтся ΠΎΡ‚ Π½ΠΈΡ…Β β€” ΠΈΠ· языка ΡƒΠ΄Π°Π»Π΅Π½ΠΎ большоС число синтаксичСских срСдств, ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Java Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ C++, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ языка, Ρ‚Π°ΠΊ ΠΈ созданиС трансляторов для Π½Π΅Π³ΠΎ.
ИсполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹Β 
Java-ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² дальнСйшСм интСрпрСтируСтся ΠΈΠ»ΠΈ компилируСтся, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ C++ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (хотя, тСорСтичСски, Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ для C++ трансляторы Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄). Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ опрСдСляСт Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² сфСрах примСнСния языков: Java вряд Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована ΠΏΡ€ΠΈ написании Ρ‚Π°ΠΊΠΈΡ… спСцифичСских ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠ°ΠΊ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° устройств ΠΈΠ»ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ систСмныС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ исполнСния Java Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Π°ΠΆΠ΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ (Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄) ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пСрСносимыми. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ срСда исполнСния ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java Π½Π° любой Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ Π² любой ОБ, Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, усилия ΠΏΠΎ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ (ΠΏΡ€ΠΈ соблюдСнии Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎ созданию пСрСносимых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΒ β€” ΠΈ вовсС Π½ΡƒΠ»Π΅Π²Ρ‹Π΅). Π¦Π΅Π½ΠΎΠΉ пСрСносимости становится потСря эффСктивности — Ρ€Π°Π±ΠΎΡ‚Π° срСды исполнСния ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ расходам.
Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽΒ 
C++ слСдуСт классичСской Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ΅ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΊΠΎΠ³Π΄Π° программист, выдСляя динамичСски ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, обязан ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ своСврСмСнном Π΅Ρ‘ освобоТдСнии. Java Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² срСдС со сборкой мусора, которая автоматичСски отслСТиваСт ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ освобоТдаСт Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡƒΡŽ ΠΈΠΌΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ Π² систСмном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π³Π΄Π΅ трСбуСтся ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ программиста Π½Π°Π΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ рСсурсами, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π² ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни освобоТдаСт программиста ΠΎΡ‚ нСобходимости ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΌΠ΅Π½Ρ‚ прСкращСния использования Ρ€Π°Π½Π΅Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ памяти. Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ мусора Java Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ систСмных рСсурсов, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ сниТаСт ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.
Бтандартизация окруТСния 
Π’ Java Π΅ΡΡ‚ΡŒ Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ стандарты Π½Π° Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄, Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ, Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ, Π΄ΠΈΠ°Π»ΠΎΠ³, доступ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹ΠΌ прилоТСниям. C++ Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ свободСн. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ, доступ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΒ Ρ‚.Β Π΄. ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСдостатком, Ссли программист Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свой собствСнный стандарт.
Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈΒ 
C++ сохраняСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ указатСлями. Π’ Java ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π΅Ρ‚. ИспользованиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ часто являСтся ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ошибок, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ программирования. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, C++ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ΠΎΠΌ срСдств (конструкторы ΠΈ дСструкторы, стандартныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ссылки), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ освобоТдСниС памяти Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ опасныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с указатСлями. Однако Ρ‚Π°ΠΊΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹ программирования, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² языкС Java ΠΎΠ½ΠΎ рСализуСтся автоматичСски.
ΠŸΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° программирования 
Π―Π·Ρ‹ΠΊ Java являСтся чисто ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ C++ сохраняСт возмоТности чисто ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ программирования (свободныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅).
ДинамичСская информация ΠΎ Ρ‚ΠΈΠΏΠ°Ρ…Β 
Π’ C++ отсутствуСт полноцСнная ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π²ΠΎ врСмя исполнСния RTTI. Π­Ρ‚Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² C++, имСя ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π²ΠΎ врСмя компиляции CTTI.
ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Β 
C++ сохранил прСпроцСссор Π‘ΠΈ, Π² Ρ‚ΠΎΠΌ числС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ввСдСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ синтаксиса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ #define. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ нСбСзопасСн, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ становятся сильно связаны Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΆΠ°Π΅Ρ‚ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π‘++ прСдоставляСт достаточно срСдств (константы, ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ практичСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ использованиС #define. Java просто ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΠ»Π° прСпроцСссор ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, избавившись Ρ€Π°Π·ΠΎΠΌ ΠΎΡ‚ всСх ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π΅Π³ΠΎ использованиСм, хотя ΠΈ потСряв ΠΏΡ€ΠΈ этом Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ возмоТности.

ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ языков приводят ΠΊ оТСсточённым спорам ΠΌΠ΅ΠΆΠ΄Ρƒ сторонниками Π΄Π²ΡƒΡ… языков ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ язык Π»ΡƒΡ‡ΡˆΠ΅. Π‘ΠΏΠΎΡ€Ρ‹ эти Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ бСспрСдмСтны, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сторонники Java ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ различия говорящими Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Java, Π° сторонники C++ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅. НСкоторая аргумСнтация устарСваСт со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠΏΡ€Ρ‘ΠΊΠΈ Π² нСэффСктивности Java ΠΈΠ·-Π·Π° наличия срСды исполнСния, Π±Ρ‹Π²ΡˆΠΈΠ΅ справСдливыми Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ 1990-Ρ… Π³ΠΎΠ΄ΠΎΠ², Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π»Π°Π²ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ³ΠΎ роста ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΈ появлСния Π±ΠΎΠ»Π΅Π΅ эффСктивной Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ исполнСния (

Π”Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС программисты ΡΠ²Π»ΡΡŽΡ‚ΡΡ сторонниками ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· языков. По мнСнию Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° программистов, Java ΠΈ C++ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π°ΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ областями примСнимости. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ языка для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡ являСтся вопросом Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ вкуса.

Достоинства ΠΈ нСдостатки языка

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ достоинства ΠΈ, Π² особСнности, нСдостатки Π‘++ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² контСкстС Ρ‚Π΅Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… строился язык, ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊ Π½Π΅ΠΌΡƒ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ»ΠΈΡΡŒ.

Достоинства

C++Β β€” Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык, содСрТащий срСдства создания эффСктивных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ практичСски любого назначСния, ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π΄ΠΎ слоТных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… комплСксов самого Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ назначСния. Π’ частности:

  • Высокая ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с языком Π‘, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вСсь ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π‘-ΠΊΠΎΠ΄ (ΠΊΠΎΠ΄ Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»ΠΊΠ°ΠΌΠΈ скомпилирован компилятором Π‘++; Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, написанныС Π½Π° Π‘, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ ΠΈΠ· Π‘++ нСпосрСдствСнно Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, позволяя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ, написанным Π½Π° Π‘, Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, написанный Π½Π° Π‘++).
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ стили ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ программирования, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ООП, ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, макросы).
  • Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, адрСсами, ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡ… спСциализация ΠΈ вычислСния Π½Π° этапС компиляции, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹.
  • ΠšΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ. Доступны компиляторы для большого количСства ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Π½Π° языкС C++ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для самых Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ систСм.
  • Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. Π―Π·Ρ‹ΠΊ спроСктирован Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ программисту ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ всСми аспСктами структуры ΠΈ порядка исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Ни ΠΎΠ΄Π½Π° ΠΈΠ· языковых возмоТностСй, приводящая ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ расходам, Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ для ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡΒ β€” ΠΏΡ€ΠΈ нСобходимости язык позволяСт ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НСдостатки

ΠžΡ‚Ρ‡Π°ΡΡ‚ΠΈ нСдостатки C++ унаслСдованы ΠΎΡ‚ языка-ΠΏΡ€Π΅Π΄ΠΊΠ°Β β€” Π‘ΠΈ,Β β€” ΠΈ Π²Ρ‹Π·Π²Π°Π½Ρ‹ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ большСй совмСстимости с Π‘ΠΈ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ нСдостатки, ΠΊΠ°ΠΊ:

  • Бинтаксис, ΠΏΡ€ΠΎΠ²ΠΎΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ошибки:
    • ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ присваивания обозначаСтся ΠΊΠ°ΠΊ = , Π° опСрация сравнСния ΠΊΠ°ΠΊ ==. Π˜Ρ… Π»Π΅Π³ΠΊΠΎ ΡΠΏΡƒΡ‚Π°Ρ‚ΡŒ, ΠΏΡ€ΠΈ этом опСрация присваивания Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, поэтому присваиваниС Π½Π° мСстС выраТСния являСтся синтаксичСски ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ, Π° Π² конструкциях Ρ†ΠΈΠΊΠ»Π° ΠΈ вСтвлСния появлСниС числа Π½Π° мСстС логичСского значСния Ρ‚Π°ΠΊΠΆΠ΅ допустимо, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Π°Ρ конструкция оказываСтся синтаксичСски ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ошибки:
      if (x=0) { ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ }
      

      Π—Π΄Π΅ΡΡŒ Π² условном ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ΠΏΠΎ ошибкС написано присваиваниС вмСсто сравнСния. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x с Π½ΡƒΠ»Ρ‘ΠΌ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° присвоит x Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ условия Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ if. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½ΡƒΠ»ΡŒ соотвСтствуСт логичСскому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ «лоТь» (false), Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² условной конструкции Π½Π΅ выполнится Π½ΠΈΠΊΠΎΠ³Π΄Π°. Ошибки Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ, Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… соврСмСнных компиляторах прСдлагаСтся диагностика Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… конструкций.

    • ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания (=), ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ (++), Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ () ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ сочСтании с ΠΎΠ±ΠΈΠ»ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ это позволяСт, хотя ΠΈ Π½Π΅ обязываСт, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ выраТСния. НаличиС этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Π‘ΠΈ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ инструмСнт Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, Π½ΠΎ Π² настоящСС врСмя ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ компиляторы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ Π½Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… выраТСниях. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² языков C ΠΈ C++Β β€” ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ программисту ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² любом стилС, Π° Π½Π΅ Π½Π°Π²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ Β«Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉΒ» ΡΡ‚ΠΈΠ»ΡŒ.
    • ΠœΠ°ΠΊΡ€ΠΎΡΡ‹ (#define) ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ, Π½ΠΎ опасным срСдством. Они сохранСны Π² C++ нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π½ΠΈΡ…, благодаря шаблонам ΠΈ встроСнным функциям, Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ Π²Π΅Π»ΠΈΠΊΠ°. Π’ унаслСдованных стандартных Π‘-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасных макросов.
    • НСкоторыС прСобразования Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½Ρ‹. Π’ частности, опСрация Π½Π°Π΄ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌ числами Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.
    • ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ break Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΏΡ€ΠΈ Π΅Π³ΠΎ отсутствии ΠΏΡ€ΠΎΠ²ΠΎΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ошибки ΠΈΠ·-Π·Π° пропуска break. Π­Ρ‚Π° ΠΆΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Β«Ρ‚Ρ€ΡŽΠΊΠΈΒ», Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ break ΠΈ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
  • ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€, унаслСдованный ΠΎΡ‚ Π‘, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π΅Π½. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ с ΠΎΠ΄Π½ΠΎΠΉ стороны ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСльзя (ΠΈΠ»ΠΈ тяТСло) ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ мСтапрограммирования, Π° с Π΄Ρ€ΡƒΠ³ΠΎΠΉ, вслСдствиС своСй примитивности, ΠΎΠ½ часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ дСйствий ΠΏΠΎ ΠΎΠ±Ρ…ΠΎΠ΄Ρƒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. НСкоторыС языки программирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Nemerle) ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ бСзопасныС систСмы мСтапрограммирования (Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ макросами, Π½ΠΎ ΠΌΠ°Π»ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ макросы Π‘/Π‘++).
  • ΠŸΠ»ΠΎΡ…Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΏΠΎ сути, Π² классичСском Π‘ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ языка отсутствуСт, Π΅Ρ‘ обСспСчСниС ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΆΠ΅Π½ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ). ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ интСрфСйса внСшнСго модуля Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΡƒΡŽ вставку Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (#include) ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎ замСдляСт ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ большого количСства ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обрабатываСтся компилятором, оказываСтся ΠΎΡ‡Π΅Π½ΡŒ Π²Π΅Π»ΠΈΠΊ). Π­Ρ‚Π° схСма Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ скопирована Π² C++. Для устранСния этого нСдостатка, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ компиляторы Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСкомпиляции Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Precompiled Headers.

К собствСнным нСдостаткам C++ ΠΌΠΎΠΆΠ½ΠΎ отнСсти:

  • Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… C++ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ, Π° построСниС компилятора сопряТСно с большим количСством ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ частности:
    • Π’ языкС практичСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ сохранён Π½Π°Π±ΠΎΡ€ конструкций Π‘ΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ срСдства. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях Π½ΠΎΠ²Ρ‹Π΅ срСдства ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ старыС, Π½ΠΎ Π² языкС ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.
    • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° мноТСствСнного наслСдования Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ООП-подсистСмС языка Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ†Π΅Π»Ρ‹ΠΉ ряд логичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ создаёт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трудности Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ компилятора.
    • Π¨Π°Π±Π»ΠΎΠ½Ρ‹ Π² своём исходном Π²ΠΈΠ΄Π΅ приводят ΠΊ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΎΡ‡Π΅Π½ΡŒ большого ΠΎΠ±ΡŠΡ‘ΠΌΠ°, Π° ввСдённая ΠΏΠΎΠ·ΠΆΠ΅ Π² язык Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ частичной спСцификации шаблонов Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠ° ΠΈ Π½Π΅ поддСрТиваСтся ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ компиляторами.
  • НСдостаток ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ врСмя компиляции (CTTI).
  • ΠœΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° основС шаблонов C++ слоТно ΠΈ ΠΏΡ€ΠΈ этом ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π² возмоТностях. Оно состоит Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ срСдствами шаблонов C++ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ языка программирования Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Π²ΠΎ врСмя компиляции. Π‘Π°ΠΌΠ° ΠΏΠΎ сСбС данная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ вСсьма ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Π°, Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ вСсьма Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Π―Π·Ρ‹ΠΊΠΈ Lisp/Nemerle ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ простыС для восприятия подсистСмы мСтапрограммирования. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² языкС D Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° сравнимая ΠΏΠΎ мощности, Π½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ простая Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ подсистСма шаблонного мСтапрограммирования.
  • Π₯отя дСкларируСтся, Ρ‡Ρ‚ΠΎ Π‘++ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅Π½Π½Ρ‹ΠΉ язык, Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π² языкС отсутствуСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. ΠžΡ‚Ρ‡Π°ΡΡ‚ΠΈ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π» устраняСтся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ (Boost) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ срСдства мСтапрограммирования для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ языка Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ конструкциями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ лямбд/Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²), Π½ΠΎ качСство ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ уступаСт качСству встроСнных Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ языки Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ возмоТности Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков, ΠΊΠ°ΠΊ сопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ, Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΊΡ€Π°ΠΉΠ½Π΅ слоТно ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ срСдствами мСтапрограммирования.
  • НСкоторыС ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ нСдостатком языка C++ отсутствиС встроСнной систСмы сборки мусора. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π² C++ имССтся достаточно срСдств, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ использованиС опасных ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ использовании сборки мусора (Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π° Π½Π΅ языка). ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ встроСнной сборки мусора позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ самому Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ управлСния рСсурсами.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Бсылки

Π‘Ρ‚Π°Ρ‚ΡŒΠΈ ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΠΏΠΎ C++
Π€ΠΎΡ€ΡƒΠΌΡ‹
  • codeby.net C, Π‘++ ΠΈ Π‘ Builder. БСлорусский Ρ„ΠΎΡ€ΡƒΠΌ ΠΏΠΎ C++
  • www.rsdn.ru/forum/?group=cppΒ β€” Ρ„ΠΎΡ€ΡƒΠΌ ΠΏΠΎ C++ Π½Π°
    • Bloodshed Dev-C++ (сайт)Β β€” бСсплатная ΠΈ свободная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² C++ ΠΏΠΎΠ΄ Windows.
    • (сайт)Β β€” бСсплатная ΠΈ свободная кроссплатформСнная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
    • Blitz++Β β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C++, с ΡƒΠΏΠΎΡ€ΠΎΠΌ Π½Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ Π°Π»Π³Π΅Π±Ρ€Ρƒ
    • The Matrix Template LibraryΒ β€” линСйная Π°Π»Π³Π΅Π±Ρ€Π° Π½Π° C++
    • Boost C++ LibrariesΒ β€” свободныС кроссплатформСнныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° C++
    • GNU Scientific LibraryΒ β€” свободная матСматичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для C/C++, распространяСмая Π½Π° условиях Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GNU General Public License.
    • The C++ Standards Committee
    • VivaCoreΒ β€” свободная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для создания систСм статичСского Π°Π½Π°Π»ΠΈΠ·Π° Π‘ΠΈ/Π‘ΠΈ++ ΠΊΠΎΠ΄Π° [1].
    • сайт)Β β€” бСсплатная открытая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для создания своСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.
    • сайт)Β β€” Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° создания кроссплатформСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, бСсплатная для нСкоммСрчСского использования.

    Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

    • Бтрауструп Π‘. Π―Π·Ρ‹ΠΊ программирования C++. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ = The C++ programming language. Special edition. β€” М.: Π‘ΠΈΠ½ΠΎΠΌ-ΠŸΡ€Π΅ΡΡ, 2007. β€” 1104 с. β€” ISBN 5-7989-0223-4
    • Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚. ΠŸΠΎΠ»Π½Ρ‹ΠΉ справочник ΠΏΠΎ C++ = C++: The Complete Reference. β€” 4-Π΅ ΠΈΠ·Π΄. β€” М.: Π’ΠΈΠ»ΡŒΡΠΌΡ, 2006. β€” 800 с. β€” ISBN 0-07-222680-3
    • ДТСсс Π›ΠΈΠ±Π΅Ρ€Ρ‚ΠΈ, Дэвид Π₯ΠΎΡ€Π²Π°Ρ‚. Освой ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ C++ Π·Π° 24 часа = Sams Teach Yourself C++ in 24 Hours, Complete Starter Kit. β€” 4-Π΅ ΠΈΠ·Π΄. β€” М.: Π’ΠΈΠ»ΡŒΡΠΌΡ, 2007. β€” 448 с. β€” ISBN 0-672-32681-7
    • БтСфСнс Π”. Π . C++. Π‘Π±ΠΎΡ€Π½ΠΈΠΊ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ². β€” ΠšΠ£Π”Π˜Π¦-ΠŸΠ Π•Π‘Π‘, 2007. β€” 624 с. β€” ISBN 5-91136-030-6

C β€” ВикипСдия. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ C

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΈΠ· Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ β€” свободной энциклопСдии

C (Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π°), Π‘ (ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π°)

Лингвистика

  • c β€” ΠΏΡ€Π΅Π΄Π»ΠΎΠ³ (Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π΅Ρ‡ΠΈ).
  • (င) β€” Π±ΡƒΠΊΠ²Π° Нга бирманского Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

  • C (Π‘ΠΈ) β€” язык программирования.
  • C# (C Sharp, Π‘ΠΈ-Π¨Π°Ρ€ΠΏ) β€” язык программирования.
  • C++ β€” язык программирования.
  • C β€” 16-Ρ€ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС числа 12 (Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСниС числа 12 Π² 13-Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния ΠΈΠ»ΠΈ Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ систСмС счислСния с основаниСм, большим числа 12).
  • C: (Ρ‡Π°Ρ‰Π΅ Π² составС Ρ„Ρ€Π°Π· Π²Ρ€ΠΎΠ΄Π΅ «диск C:Β») β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ частоупотрСбляСмоС имя диска Π² ПК с ОБ сСмСйств DOS ΠΈ Windows, Π° Ρ‚Π°ΠΊΠΆΠ΅ OS/2; «диск ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ»; стартовоС имя Π² IDE-Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ².

Π€ΠΈΠ·ΠΈΠΊΠ°

Π₯имия ΠΈ биология

Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ

  • C β€” Π² ΠΌΡƒΠ·Ρ‹ΠΊΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΡ‚Ρ‹ Β«Π΄ΠΎΒ» Π»ΠΈΠ±ΠΎ Π°ΠΊΠΊΠΎΡ€Π΄Π° Π΄ΠΎ ΠΌΠ°ΠΆΠΎΡ€.
  • C β€” Π² ΠΌΡƒΠ·Ρ‹ΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΡ‚Π°, эквивалСнтСн 4/4.

ЖСлСзнодороТная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°

Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ²ΠΎΠ·Ρ‹:

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°

Π”Ρ€ΡƒΠ³ΠΈΠ΅ области

  • C β€” число 100 римскими Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ.
  • Β© β€” Π—Π½Π°ΠΊ ΠΎΡ…Ρ€Π°Π½Ρ‹ авторского ΠΏΡ€Π°Π²Π°.
  • C β€” Ρ‚ΠΈΠΏΠΎΡ€Π°Π·ΠΌΠ΅Ρ€ Π±Π°Ρ‚Π°Ρ€Π΅Π΅ΠΊ ΠΈ аккумуляторов Π΄Π»ΠΈΠ½ΠΎΠΉ 50 ΠΌΠΌ ΠΈ Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ 26,2 ΠΌΠΌ.
  • C β€” Π°Π½ΠΈΠΌΠ΅-сСриал 2011 Π³ΠΎΠ΄Π°.
  • C β€” Π΄ΡŽΠΉΠΌΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ видСозаписи.
  • Π‘ β€” Ρ‚ΠΈΠΏ совСтских ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… Π»ΠΎΠ΄ΠΎΠΊ.
  • Π‘ β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΠ² для листов сСрии А.
  • Π’ Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ Ρ‚ΠΎΠΊΠ΅ ΠΈ Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ элСктроснабТСнии:
    • C («цэ») β€” ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… Ρ„Π°Π· (A, B, C β€” Π°, бэ, цэ) (Ρ„Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²) ΠΏΡ€ΠΈ Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ элСктроснабТСнии.
    • C1, C2, C3 (Цэ-1, Цэ-2, Цэ-3) β€” Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ обозначСния Ρ„Π°Π· Π² Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ Ρ‚ΠΎΠΊΠ΅ (вмСсто A, B, C).

C— β€” ВикипСдия. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ C—

C— (читаСтся ΠΊΠ°ΠΊ Β«Π‘ΠΈ минус минус»)Β β€” пСрСносимый язык программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС[en] для свСрхвысокоуровнСвых языков. Π‘ΠΎΠ·Π΄Π°Π½ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ 1990-Ρ… Π³ΠΎΠ΄ΠΎΠ² исслСдоватСлями Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования ΠŸΠ΅ΠΉΡ‚ΠΎΠ½ΠΎΠΌ-ДТонсом ΠΈ Рэмси Норманом (Π°Π½Π³Π».)русск.. Основная ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² сравнСнии с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΠΎΠ² Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сгСнСрированный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° C— являСтся Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌΒ β€” тСкстом Π½Π° языкС с си-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ синтаксисом.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ языка

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ написаниС ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° само ΠΏΠΎ сСбС являСтся довольно слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Π° бэкСнды, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ доступны исслСдоватСлям Ρ‚Π΅Ρ… Π³ΠΎΠ΄ΠΎΠ², Π±Ρ‹Π»ΠΈ слоТными ΠΈ ΠΏΠ»ΠΎΡ…ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ, Π±Ρ‹Π»ΠΎ создано нСсколько ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² компиляторов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ΄ Π½Π° Π‘ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Ρ‹Π» создан компилятор языка ΠœΠΎΠ΄ΡƒΠ»Π°-3). Однако язык Π‘ΠΈ являСтся Π½Π΅ самым ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков программирования: Π² Π½Ρ‘ΠΌ Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ хвостовой рСкурсии, сборки мусора ΠΈ эффСктивной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций. C— Π±Ρ‹Π» создан ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π‘ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ присутствуСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· этих возмоТностСй. Π‘Π°ΠΌΠΎΠΉ ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π² Π½Ρ‘ΠΌ являСтся интСрфСйс для Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ пСрСносимыС сборщики мусора, систСмы ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ компилятором C—.

Бинтаксис языка позаимствован Π² основном ΠΈΠ· языка Π‘ΠΈ. C— ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ»ΠΈ мСняСт использованиС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стандартных возмоТностСй Π‘ΠΈ, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ числом Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², синтаксис ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ аспСкты систСмы Ρ‚ΠΈΠΏΠΎΠ² Π‘ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это прСпятствуСт Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ возмоТностям языка C—, Π° Ρ‚Π°ΠΊΠΆΠ΅ простотС, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ инструмСнты ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² C— Π½Π΅ трСбуСтся явного объявлСния Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π² Π½Ρ‘ΠΌ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ структуры ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

НазваниС языка являСтся Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€ΠΎΠ΄Π΅ ΡˆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ, указывая Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ C— являСтся ΡƒΠΌΠ΅Π½ΡŒΡˆΡ‘Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ Π‘ΠΈ, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ C++ являСтся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Π‘ΠΈ. (Π’ языках C ΠΈ C++ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Β«—Β» ΠΈ Β«++Β» ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° 1.)

C— являСтся Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ для Glasgow Haskell Compiler. НСкоторыС ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² C—, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠŸΠ΅ΠΉΡ‚ΠΎΠ½-ДТонса, Π”ΠΈΠ°ΡˆΠ° (JoΓ£o Dias) ΠΈ Рэмси, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π»ΠΈ участиС Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Glasgow Haskell Compiler[4][5]. Кодовая Π±Π°Π·Π° ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° GHC Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Microsoft Research Π² ΠšΠ΅ΠΌΠ±Ρ€ΠΈΠ΄ΠΆΠ΅, хотя это Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Microsoft.

БистСма Ρ‚ΠΈΠΏΠΎΠ²

БистСма Ρ‚ΠΈΠΏΠΎΠ² Π² C— ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ спроСктирована Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ограничСния, Π½Π°Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ обСспСчСниСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π° Π½Π΅ традициями систСм Ρ‚ΠΈΠΏΠΎΠ² Π±ΠΎΠ»Π΅Π΅ высокоуровнСвых языков. Π’ C— Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠ΅ Π² рСгистрах ΠΈΠ»ΠΈ памяти, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°Β β€” Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€. Однако Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ являСтся ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 8-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, C— Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт логичСский Ρ‚ΠΈΠΏ bool, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выраТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для управлСния Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сохранён Π² рСгистрС ΠΈΠ»ΠΈ Π² памяти.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

Бсылки

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *