Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Язык программирования
Programming language
C++/CLI — это вариант языка программирования C++, модифицированный для платформы Common Language Infrastructure. Он включен в состав Visual Studio 2005 и более поздних версий и обеспечивает взаимодействие с другими языками .NET, такими как C#. Компания Microsoft разработала C++/CLI как замену Managed Extensions для C++. В декабре 2005 года Ecma International опубликовала спецификации C++/CLI в качестве стандарта ECMA 372.
C++/CLI is a variant of the C++ programming language, modified for Common Language Infrastructure. It has been part of Visual Studio 2005 and later, and provides interoperability with other NET languages such as C#. Microsoft created C++/CLI to supersede Managed Extensions for C++. In December 2005, Ecma International published C++/CLI specifications as the ECMA 372 standard.
Изменения синтаксиса
C++/CLI следует рассматривать как самостоятельный язык (например, с новым набором ключевых слов), а не как надмножество C++, ориентированное на Managed C++ (MC++) (чьи нестандартные ключевые слова были оформлены как или). В связи с этим произошли значительные синтаксические изменения, особенно в части устранения неоднозначных идентификаторов и добавления специфичных для .NET возможностей. Многие конфликтующие синтаксисы, такие как множественные версии оператора в MC++, были разделены: в C++/CLI типы .NET reference создаются с использованием нового ключевого слова `gcnew` (то есть, выделение памяти с автоматической сборкой мусора). Кроме того, C++/CLI представил концепцию generics из .NET (похожие, для большинства распространенных задач, на стандартные шаблоны C++, но существенно отличающиеся в реализации).
C++/CLI should be thought of as a language of its own (with a new set of keywords, for example), instead of the C++ superset oriented Managed C++ (MC++) (whose non standard keywords were styled like or ). Because of this, there are some major syntactic changes, especially related to the elimination of ambiguous identifiers and the addition of NET specific features. Many conflicting syntaxes, such as the multiple versions of operator in MC++, have been split: in C++/CLI, NET reference types are created with the new keyword (i. e. garbage collected new ). Also, C++/CLI has introduced the concept of generics from NET (similar, for the most common purposes, to standard C++ templates, but quite different in their implementation).
Ручки
В MC++ существовало два различных типа указателей: указатели были обычными указателями C++, а указатели работали с NET-ссылочными типами. Однако в C++/CLI существует только один тип указателя – обычный указатель C++, а доступ к NET-ссылочным типам осуществляется через "дескриптор" с новым синтаксисом (вместо ). Эта новая конструкция особенно полезна при смешении управляемого и стандартного кода C++; она позволяет чётко определить, какие объекты подлежат автоматической сборке мусора NET, а какие объекты программист должен явно уничтожить.
In MC++, there were two different types of pointers: pointers were normal C++ pointers, while pointers worked on NET reference types. In C++/CLI, however, the only type of pointer is the normal C++ pointer, while the NET reference types are accessed through a "handle", with the new syntax (instead of ). This new construct is especially helpful when managed and standard C++ code is mixed; it clarifies which objects are under NET automatic garbage collection and which objects the programmer must remember to explicitly destroy.
C++/CX
C++/CX, нацеленный на WinRT, несмотря на то, что генерирует полностью неуправляемый код, использует синтаксис `ref` и `^` для компонентов WinRT с подсчетом ссылок, которые аналогичны COM "объектам".
C++/CX targeting WinRT, although it produces entirely unmanaged code, borrows the ref and ^ syntax for the reference counted components of WinRT, which are similar to COM "objects".