User:Comp4001/sandbox

= C++/CX = C++/CX (پسوندهای مؤلفه C++) یک زبان برای پلتفرم زمان اجرای ویندوز(Windows Runtime) مایکروسافت است. این به شکل یک پسوند زبان برای کامپایلرهای C++ است و برنامه نویسان C++ را قادر می سازد برنامه هایی بنویسند که Windows Runtime (WinRT) API را فراخوانی می کنند.

C++/CX جایگزین زبان C++/WinRT می‌شود که خودش یک پسوند برای زبان C++ نیست. بلکه یک کتابخانه کاملاً استاندارد ISO C++17 مبتنی بر هدر فایل است.برنامه های افزودنی زبان(اکستنشن های زبان)، نحو و سینتکس را از C++/CLI قرض می گیرند اما به جای Common Language Runtime و کد مدیریت شده، کد بومی Windows Runtime Universal Windows Platform را هدف قرار می دهند. مجموعه‌ای از انتزاع‌های نحوی و کتابخانه‌ای را ارائه می‌کند که مدل برنامه‌نویسی WinRT مبتنی بر زیرمجموعه WRL COM را به گونه‌ای طراحی می‌کند که برای کدگذارهای برنامه‌های افزودنی مدیریت‌شده C++/CLI بصری باشد. امکان فراخوانی زمان اجرا ویندوز از ISO C++ بومی از طریق کتابخانه قالب C++ Windows Runtime C++ (WRL) وجود دارد. با این حال، WRL نیز توسط C++/WinRT جایگزین می‌شود.

نحو پسوند
C++/CX پسوندهای نحوی را برای برنامه نویسی برای زمان اجرا ویندوز معرفی می کند. نحو کلی غیر اختصاصی پلت فرم با استاندارد C++11 سازگار است.

اشیا
اشیاء WinRT با استفاده از  ایجاد یا فعال می شوند و به متغیرهای اعلام شده با نماد   (hat) به ارث رسیده از C++/CLI اختصاص داده می شوند. یک متغیر WinRT به سادگی یک جفت اشاره گر به جدول روش مجازی و اشاره گر به داده های داخلی شی است.

شمارش مرجع
یک شی WinRT به عنوان مرجع شمارش می شود و بنابراین به طور مشابه با اشیاء C++ معمولی محصور در shared_ptrs رفتار می کند. زمانی یک شی حذف می شود که هیچ مرجعی به آن منتهی نشود.

در این زبان جمع آوری زباله نداریم. با این وجود، کلمه کلیدی  برای استفاده احتمالی در آینده رزرو شده است.

کلاس های زمان اجرا
انواع خاصی از کلاس های زمان اجرا وجود دارد که ممکن است شامل ساختارهای پسوند مؤلفه باشد. اینها به سادگی به عنوان شناخته می شوند زیرا با استفاده از کلاس ref اعلام می شوند.

کلاس های جزئی
C++/CX مفهوم کلاس های جزئی را معرفی می کند. این ویژگی اجازه می دهد تا یک تعریف کلاس واحد بین چندین فایل تقسیم شود، عمدتاً برای فعال کردن ابزار طراحی رابط کاربری گرافیکی XAML برای ایجاد خودکار کد در یک فایل جداگانه به منظور شکستن منطق نوشته شده توسط توسعه دهنده. بخش‌ها بعداً در کامپایل ادغام می‌شوند.

زبان های دات نت مانند سی شارپ سالهاست که این ویژگی را دارند. کلاس های جزئی هنوز آن را به استاندارد C++ تبدیل نکرده اند و بنابراین نمی توانند در C++11 خالص استفاده شوند.

فایلی که توسط طراح رابط کاربری گرافیکی تولید و به روز می شود و بنابراین برنامه نویس نباید آن را اصلاح کند. به کلمه کلیدی  توجه کنید. فایلی که برنامه نویس منطق رابط کاربری را در آن می نویسد. هدری که قسمت تولید شده توسط کامپایلر از کلاس در آن تعریف شده است وارد می شود. توجه داشته باشید که کلمه کلیدی  ضروری نیست. این فایلی است که اعضای کلاس جزئی در آن پیاده سازی می شوند.

ژنریک ها
Windows Runtime و در نتیجه C++/CX از ژنریک های مبتنی بر زمان اجرا پشتیبانی می کند. اطلاعات نوع عمومی در فراداده موجود است و در زمان اجرا نمونه سازی می شود، برخلاف الگوهای C++ که ساختارهای زمان کامپایل هستند. هر دو توسط کامپایلر پشتیبانی می شوند و می توان آنها را با هم ترکیب کرد.

فراداده
همه برنامه های WinRT کلاس ها و اعضای اعلام شده خود را از طریق ابرداده در معرض نمایش قرار می دهند. قالب همان است که به عنوان بخشی از زیرساخت زبان مشترک (CLI)، استاندارد ایجاد شده از چارچوب دات نت استاندارد شده است. به همین دلیل، کد را می توان در زبان های C++/CX، CLI و جاوا اسکریپتی که زمان اجرای ویندوز را هدف قرار می دهند به اشتراک گذاشت.

کتابخانه زمان اجرا
C++/CX مجموعه ای از کتابخانه ها دارد که زمان اجرای ویندوز را هدف قرار می دهند. اینها به پل زدن عملکرد کتابخانه استاندارد C++ و WinRT کمک می کنند.

تشخیص مبتنی بر پیش پردازنده
با آزمایش وجود نماد پیش پردازنده می توانید تشخیص دهید که برنامه افزودنی C++/CX روشن است یا خیر.

جستارهای وابسته
Windows Runtime

منابع

 * Introduction to C++/WinRT docs.microsoft.com


 * Inside the C++/CX Design - Visual C++ Team Blog
 * GoingNative 3: The C++/CX Episode with Marian Luparu - Channel 9
 * WinRT and winmd Files - Marius Bancila's Blog
 * Visual C++ Language Reference (C++/CX)