خلاصه » ویژگی ها

ویژگی های معرفی شده در ++C چيست؟

در مقایسه با C زبان ++C ویژگی‌های جدیدی را معرفی نموده‌است مانند تعریف متغیر به عنوان عبارت، تغییر نوع‌های همانند تابع، new/حذف، نوع داده bool، توابع درون‌خطی، آرگومان پیشفرض، گرانبارسازی عملگر و تابع، فضای نام و عملگر تعیین حوزه ::، کلاس‌ها (شامل تمام ویژگی‌های مربوط به کلاس‌ها همانند وراثت، اعضای تابع، توابع مجازی، کلاس‌های انتزاعی، و سازنده‌ها)، قالب‌ها، پردازش استثناء، کنترل نوع زمان اجرا، عملگرهای سربار شده ورودی (<<) و خروجی (>>).

برخلاف باور عموم ++C نوع داده ثابت را معرفی ننموده‌است. کلمه const کمی پیش از استفاده از این کلمه در ++C توسط زبان C بصورت رسمی بکار گرفته شد و در بعضی حالات ++C تعداد کنترل نوع بیشتری نسبت به زبان C انجام می‌دهد. (برای اطلاعات بیشتر بخش «ناهماهنگی با C» را در پایین ببینید)

توضیحات با استفاده از // قبل از زبان C در زبان BCPL معرفی شده بود که مجدداً در زبان ++C به کار گرفته شد.

بعضی ویژگی‌های ++C بعداً توسط C به کار گرفته شد مانند نحوه تعریف for، توضیحات به شکل ++C (با استفاده از //)، و کلمه inline با وجود اینکه تعریف این کلمه در C با تعریف آن در زبان ++C هماهنگی ندارد. همچنین در C ویژگی‌هایی معرفی شده‌است که در ++C وجود ندارند مانند ماکروهای قابل تغییر و استفاده بهتر از آرایه‌ها به عنوان آرگومان. بعضی کامپایلرها این ویژگی‌ها را پیاده نموده‌اند اما در بقیه این ویژگی‌ها موجب ناهماهنگی می‌گردد.

کامپایلر چیست ؟

مترجم یا همگردان یا کامپایلر (Compiler)  برنامه یا مجموعه‌ای از برنامه‌های کامپیوتری است که متنی از زبان برنامه نویسی سطح بالا (زبان مبدا) را به زبانی سطح پایین (زبان مقصد)، مثل اسمبلی یا زبان سطح ماشین، تبدیل می‌کند. خروجی این برنامه ممکن است برای پردازش شدن توسط برنامه دیگری مثل پیونددهنده مناسب باشد یا فایل متنی باشد که انسان نیز بتواند آنرا بخواند.

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

ترجمه کامل کد منبع برنامه‌ای از یک زبان سطح بالا به کد شیء، پیش از اجرای برنامه را همگردانی یا کامپایل می‌گویند.

به بیان ساده، کامپایلر برنامه‌ای است که یک برنامه نوشته شده در یک زبان خاص ساخت‌یافته را خوانده و آن را به یک برنامه مقصد (Target Language) تبدیل می‌نماید. در یکی از مهم‌ترین پروسه‌های این تبدیل، کامپایلر وجود خطا را در برنامه مبدأ اعلام می‌نماید.

انواع کامپایلر ها که از طرف شرکت های سازنده و توسعه دهنده ارائه شده به صورت زیر اومده و نسخهC++‎‎ 11  فقط روی کامپایلر های زیر قابل اجرا است.

MSVC-2012, 2013, 2015, Gcc 4.9, Clang 3.3, Intel 13.0

ویژگی های جدید در ویرایش 11 و 14 چیست؟

زبان C++11 (معروف به C++0x) یک نسخه استاندارد از زبان ++C است که در ۱۲ آگوست ۲۰۱۱ منتشر و توسط ISO جایگزین C++03 شد این نسخه دارای نشان ISO/IEC 14882:2011 می باشد و در تاریخ ۱۸ آگوست ۲۰۱۴ نسخه جدید آن یعنی C++14 منتشر و جایگزین C++11 شد.

امکانات اضافه شده به هسته ++C

یکی از وظایف کمیته استاندارد سازی توسعه هسته زبان است.در توسعه فعلی چندین بخش از زبان بهبود یافته ,که شامل چند نخی (multithreading) , پشتیبانی از بنامه نویسی عمومی ,مقدار دهی اولیه یکنواخت و پیشرفت عملکرد می باشد.

ویژگی های هسته زبان و تغییرات آن به چهار بخش کلی دسته بندی شداند:

  1. پیشرفت در عملکرد زمان اجرا (Run-Time)
  2. پیشرفت در عملکرد زمان ساخت (Build-Time)
  3. پیشرفت در ویژگی ها (قابلیت استفاده)
  4. و قابلیت های جدید

دستورات اضافه شده:

  • auto
  • nullptr
  • for each
  • override
  • Lambda
  • Strongly-typed enums
  • ()begin و () end
  • static_assert
  • smart pointer

C++14 بر روی اشکال زدایی و بهبودهای جزئی استاندارد قبلی یعنی C++11 تمرکز کرده است؛ این زبان در تاریخ ۱۵ می ۲۰۱۳ منتشر و در ۱۵ آگوست ۲۰۱۴ بعد از رای گیری و انجام تغییراتی جزیی استاندارد این زبان منتشر شد. بدلیل این که عموماً تاریخ انتشار این زبان بطور قابل ملاحظه‌ای دیر هنگام بوده است به C++14 گاهی C++1y نیز گفته می‌شود. همانند استاندارد C++11 که به آن C++0x گفته می‌شده و قرار بر این بوده که قبل از ۲۰۱۰ منتشر شود (البته تا سال ۲۰۱۱ انتشار به تعویق افتاد).

 گرچه تمامی کامپایلر ها درحال کاربروی C++14 هستند اما هنوز تمامی آن ها از C++14 پشتیبانی نمیکنند.

 در C++11 و C++14 دستورات و توابع جدیدی به هسته اصلی زبان و کتابخانه استاندارد آن اضافه شده است که شامل بسیاری از کتابخانه های C++TR1 به استسنای کتابخانه ی توابع ریاضی ویژه میباشد.

ویژگی های جدید در نسخه 14 زبان:

  • تشخیص نوع بازگشتی از تابع (Function return type deduction)
  • تشخیص نوع auto
  • کم کردن محدودیت‌های constexpr
  • قالب‌های متغیر (variable templates)
  • مقدار دهی انبوه به عضوهای کلاس (Aggregate member initialization)
  • لیترال‌های دودویی (Binary literals)
  • جدا کنند ارقام(Digit sperators)
  • لامبداهای جنریک (generic lambdas)
  • پذیرش عبارت در گیرنده لامبدا(Lambda cpatures expression)
  • اضافه شدن صفت  (Lambda cpatures expression)

ویژگی های جدید کتابخانه های استاندارد:

  • ویژگی جدید از میوتکس (Shared mutexes and locking)
  • لیترال استاندارد تعریف شده توسط کاربر (Standard user-defined literals)
  • تعریف نوع تاپل (چند تایی) بر اساس نوع (Tuple addressing via type)
  • ویژگی های کوچک در کتابخانه های استاندارد به صورت زیر می باشد:
    • قابلیت استفاده از std::make_uniqu به صورت std::make_shared برای آبجکت های std::unique_ptr
    • استفاده از std::integral_constant برای بازگشت دادن عملگر های اضافه بار شده به صورت مقدار ثابت
    • توابع عمومی std::begin/std::end با توابع std::cbegin/std::cend تقویت شده اند که بازه ای از لیترال های آغاز کننده/پایان دهنده را شامل می شوند.

انتشار نسخه بعدی استاندارد این زبان با نام غیر رسمی C++17 برای سال ۲۰۱۷ برنامه ریزی شده است. در حالی که C++ به هیچ مؤسسه‌ای وابسته نیست این مستندات به‌صورت آزادانه در دسترس نیستند. گرچه نسخه‌های نهایی نشده(draft) این اسناد در دسترس همگان قرار می‌گیرد.