C++/CLI: .NET платформасы үшін C++ тілінің нұсқасы. Visual Studio 2005-тен бастап қолданылады, C# сияқты тілдермен үйлесімділік қамтамасыз етеді. Бағдарламалау!
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
C++/CLI бағдарламалау тілі – C++ бағдарламалау тілінің Common Language Infrastructure үшін өңделген түрі. Ол Visual Studio 2005 және одан кейінгі нұсқаларында қолданылады, сондай-ақ C# сияқты басқа .NET тілдерімен үйлесімді жұмыс істеуге мүмкіндік береді. Microsoft компаниясы C++/CLI-ді C++ үшін жасалған басқарылатын кеңейтулердің орнына енгізді. 2005 жылдың желтоқсан айында Ecma International C++/CLI сипаттамаларын ECMA 372 стандарты ретінде жариялады.
Programming language
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++ (MC++) суперсетіне емес, өз алдына жеке тіл ретінде қарастыру керек (мысалы, жаңа кілт сөздер жиынтығымен). MC++-тың стандартты емес кілт сөздері немесе сияқты стильде болғандықтан, осыған байланысты маңызды синтаксистік өзгерістер енгізілді, әсіресе екі мәнді идентификаторларды жою және .NET ерекшеліктерін қосу бағытында. Көптеген қайшы келетін синтаксистер, мысалы, MC++-тағы оператордың бірнеше түрі бөлініп алынды: C++/CLI-де .NET анықтама түрлері жаңа кілт сөзбен құрылады (яғни, қоқыс жинағышпен басқарылатын жаңа). Сонымен қатар, C++/CLI .NET-тен жалпыламалар (generic) тұжырымдамасын енгізді (көп жағдайларда стандартты 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 сілтемелік типтеріне «жеңдеу» (handle) арқылы, жаңа синтаксиспен қол жеткізіледі (оның орнына). Бұл жаңа құрылым, әсіресе басқарылатын және стандартты 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
WinRT-ге бағытталған C++/CX, толығымен басқарылмайтын кодты жасаса да, WinRT-тің сілтемемен саналатын компоненттері үшін ref және ^ синтаксисін пайдаланады, бұл компоненттер 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".