17-05-2017، 11:50
استراستروپ کار بر روی زبان «C با کلاس» را در سال ۱۹۷۹ آغاز کرد. ایدهٔ ساخت این زبان جدید در زمان کار بر روی تز دکترای خود به ذهن استراستروپ خطور نمود. او متوجه شد که دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سیمولا دارای ویژگیهایی مناسب برای ساخت برنامههای بسیار بزرگ است اما برای استفادهٔ عملی بسیار کند است اما دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
بیسیپیال با وجود سرعت بسیار زیاد برای ساخت برنامههای بزرگ بسیار سطح پایین است. زمانی که استراستروپ کار خود را در آزمایشگاههای بل (Bell Labs) آغاز نمود با مشکل تحلیل دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
هسته دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
یونیکس با توجه به دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
محاسبات توزیع شده روبرو شده بود. با یادآوری تجربیات خود در دوران دکترا، او زبان C را با استفاده از ویژگیهای سیمولا گسترش داد. C به این دلیل انتخاب شد که یک زبان عمومی، سریع، قابل حمل، و در سطح گستردهای در حال استفاده بود. علاوه بر C و سیمولا زبانهای دیگری مانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ALGOL ۶۸ ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ADA , دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
CLU , دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ML نیز بر ساختار این زبان جدید اثر گذاشت. در ابتدا ویژگیهای کلاس، کلاسهای مشتق شده، کنترل نوع قوی، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
توابع درونخطی و آرگومانهای پیشفرض از طریق دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
Cfront به C اضافه شد. اولین نسخهٔ تجاری در سال ۱۹۸۵ ارائه شد.
در سال ۱۹۸۳ نام زبان از «C با کلاس» به ++C تغییر یافت. ویژگیهای دیگر شامل توابع مجازی، سربارگزاری عملگر و نام تابع، ارجاعات، ثوابت، کنترل حافظه توسط کاربر بهصورت آزاد، کنترل نوع بهتر، و توضیحات یکخطی به صورت BCPL با استفاده از «//» نیز به آن اضافه شد. در سال ۱۹۸۵ اولین نسخه زبان برنامهنویسی ++C انتشار یافت و مرجع مهمی برای این زبان فراهم شد در حالی که هیچ استاندارد رسمیای وجود نداشت. در سال ۱۹۸۹ ویرایش ۲٫۰ از زبان ++C ارائه شد. ویژگیهای جدیدی مانند ارثبری چندگانه، کلاسهای انتزاعی، اعضای ایستای توایع، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
اعضای ثابت تابع ، و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
اعضای حفاظت شده به آن اضافه شد. در سال ۱۹۹۰ «راهنمای مرجع ++C» منتشر شد. این کار بنیان استانداردهای بعدی شد. آخرین ویژگیهای اضافه شده شامل موارد زیر بودند: قالب توابع، استثناها، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
فضاهای نام ، تبدیلات جدید، و یک نوع دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
داده منطقی .
در حین تکامل ++C کتابخانهٔ استاندارد نیز بهوجود آمد. اولین نسخهٔ کتاب استاندارد شامل کتابخانهٔ جریانات I/O بود که جایگزین دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
printf و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
scanf شد. در ادامه مهمترین ویژگی اضافه شده Standard Template Library بودهاست.
استاندارد زبان[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
استاندارد سازی سی++ توسط یک گروه از تشکیلات دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ISO انجام میشود.[sup]دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
[۴] [/sup] تاکنون ۵ نسخه از استاندارد این زبان منتشر شده است؛ و استاندارد C++17 نیز برای انتشار در سال ۲۰۱۷ برنامهریزی شده است.
سال
استاندارد سی++
نام غیررسمی
۱۹۹۸
ISO/IEC 14882:1998
C++98
۲۰۰۳
ISO/IEC 14882:2003
C++03
۲۰۰۷
ISO/IEC TR 19768:2007
C++07/TR1
۲۰۱۱
ISO/IEC 14882:2011
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++11
۲۰۱۴
ISO/IEC 14882:2014[sup]دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
[۵] [/sup]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++14
۲۰۱۷
هنوز تعیین نشده.
C++17
در سال ۱۹۹۸ برای اولین بار پس از سالها کار کمیته مشترک دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ANSI –دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ISO این زبان تحت عنوان ISO/IEC 14882:1998 و نام غیررسمی C++98 استاندارد سازی شد. بعدها در سال ۲۰۰۳ نسخه جدیدی از استاندارد یعنی ISO/IEC 14882:2003 انتشار یافت و برخی از مشکلات و باگهای C++98 در آن رفع شد.
در سال ۲۰۰۵ یک گزارش فنی به اسم «دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
گزارش فنی کتابخانهٔ ۱ » (که معمولاً بصورت اختصار TR۱ خوانده میشود) منتشر شد که مواردی جدید را برای اضافه کردن به دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کتابخانه استاندارد دربرداشت با این که این گزارش قسمتی از استاندارد نبود ولی بعدها در نسخه بعدی استاندارد یعنی C++11 اضافه شد.
نسخه بعدی با نام غیررسمی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++11 و استاندارد ISO/IEC 14882:2011 در تاریخ ۱۲ اوت ۲۰۱۱ مورد تأیید دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سازمان بینالمللی استانداردسازی قرار گرفت و جایگزین دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++03 شد.
در سال ۲۰۱۴ آخرین نسخه از این زبان تا حال حاضر در در تاریخ ۱۸ اوت ۲۰۱۴ با نام غیررسمی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++14 و استاندارد ISO/IEC 14882:2014 منتشر شد. هدف اصلی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++14 همانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++03 رفع مشکلات و همچنین اضافه کردن ویژگیها و بهبود جزیی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++11 بوده است.
انتشار نسخه بعدی استاندارد این زبان با نام غیررسمی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++17 برای سال ۲۰۱۷ برنامهریزی شده است.
در حالی که ++C به هیچ مؤسسهای وابسته نیست این مستندات بهصورت آزادانه در دسترس نیستند. گرچه نسخههای نهایی نشده(draft) این اسناد در دسترس همگان قرار میگیرد.
نام ++C[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
این نام منسوب به ریک ماسکیتی (اواسط ۱۹۸۳) است و برای اولین بار در دسامبر سال ۱۹۸۳ به کار برده شد. در طول مدت تحقیق این زبان بنام «C جدید» و بعدها «C با کلاس» خوانده شد. در دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
علوم کامپیوتر هنوز هم ++C به عنوان دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ابرساختار C شناخته میشود. آخرین نام از عملگر ++ در زبان C (که برای افزایش مقدار متغیر به اندازهٔ یک واحد بکار میرود) و یک عرف معمول برای نشان دادن افزایش قابلیتها توسط + ناشی گشتهاست. با توجه به نقل قولی از استراستروپ: «این نام ویژگیها تکاملی زبان در C را نشان میدهد.» +C نام زبانی غیرمرتبط به این زبان است.
استراستروپ مبدأ این نام را در فصل اول کتاب خود «زبان برنامهنویسی ++C» اشاره مینماید که معنی دیگر ++C را میتوان در ضمائم کتاب دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
جرج ارول بنام ۱۹۸۴ یافت. در سه قسمت از زبان تخیلی Newspeak «کلمات C» برای اشاره به لغات دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
فنی و حرفهای بکار میرود. «دو علامت +» برای ایجاد صفات عالی از صفات Newspeak به کار میرفت بنابراین ++C به معنای زبانی با بیشترین شباهت به C است.
وقتی که به صورت خصوصی از ریک ماسکیتی در مورد این اسم سؤال شد او در جواب گفت که این اسم بصورت خودمانی در بین آنها به کار میرفتهاست و تصور نمیکردند که این نام بصورت نام رسمی این زبان درآید.
فلسفه[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
در کتاب «طراحی و تکامل ++C» استراستروپ قوانین مورد استفاده در طراحی ++C را بیان مینماید. دانستن این قوانین به فهمیدن نحوه عملکرد ++C و چرایی آن کمک میکند. جزئیات بیشتر در کتاب قابل دسترسی است:
ویرایش ]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کتابخانه استاندارد
سی++
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کتابخانه قالب استاندارد
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++11
هسته زبان و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کتابخانه استاندارد ++C است. این کتابخانه شامل بیشتر بخشهای دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
STL و کتابخانه استاندارد C است. بیشتر کتابخانههای ++C در استاندارد وجود ندارند و یا استفاده از تعریف قابلیت پیوند کتابخانهها را میتوان در زبانهایی مانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
فرترن ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
پاسکال ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
بیسیک نوشته شوند. البته با توجه به ویژگیهای کامپایلر مشخص خواهد شد که کدام زبان را میتوان استفاده نمود.
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کتابخانه استاندارد ++C شامل کتابخانه استاندارد C با یک سری تغییرات برای بهبود عملکرد است. بخش بزرگ بعدی این کتابخانه دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
STL است. STL شامل ابزار بسیار قدرتمندی مانند نگهدارندهها (مانند vector و list)، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
تکرارکنندهها (دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
اشارهگرهای عمومی شده) برای شبیهسازی دسترسی مانند آرایه دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
الگوریتمهایی برای جستجو و مرتبسازی در آنها وجود دارند. نقشهها (نقشههای چندگانه) (دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
آرایه شرکتپذیر ) و مجموعهها (مجموعههای چندگانه) واسطهای عمومی فراهم میسازند. در نتیجه با استفاده از قالب تابع، الگوریتمهای جنریک با هر نگهدارنده و دارای تکرارکننده عمل نماید. همانند C ویژگیهای کتابخانه را میتوان با استفاده از شبه دستور include# شامل یک سرآیند استاندارد اضافه نمود. c دارای دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
۶۹ کتابخانه استاندارد است که ۱۹ تا از آنها نامناسب تشخیص داده شدهاند.
استفاده از کتابخانه استاندارد - مانند std::vector یا std:
tring به جای آرایههای C- موجب ایجاد برنامههای مطمئنتر شدهاست.
STL در آغاز محصولی جداگانه از HP و سپس SGL پیش از ادغام در کتابخانه استاندارد ++C بودهاست. استاندارد عبارت STL را بکار نمیبرد بلکه آن را بخشی از کتابخانه میداند اما مردم هنوز هم آن را برای جداسازی بخشهای مختلف کتابخانه با این نام بکار میبرند. (جریانهای ورودی/خروجی، جهانیسازی، تشخیص، زیرمجموعه کتابخانه C)
بیشتر کامپایلرها کتابخانه استاندارد و STL را پیادهسازی مینماید. پیادهسازیهای مستقلی نیز همانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
STLport نیر وجود دارند. پروژههای دیگر نیز پیادهسازیهای خود را از STL با توجه به اهداف خود بوجود میآورند.
ویژگیهای معرفی شده در ++C[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
در مقایسه با C زبان ++C ویژگیهای جدیدی را معرفی نمودهاست مانند تعریف متغیر به عنوان عبارت، تغییر نوعهای همانند تابع، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
نو /دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
حذف ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
نوع داده bool، توابع درونخطی، آرگومان پیشفرض، گرانبارسازی عملگر و تابع، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
فضای نام و عملگر تعیین حوزه ::، کلاسها (شامل تمام ویژگیهای مربوط به کلاسها همانند وراثت، اعضای تابع، توابع مجازی، کلاسهای انتزاعی، و سازندهها)، قالبها، پردازش استثناء، کنترل نوع زمان اجرا، عملگرهای سربار شده ورودی (<<) و خروجی (>>).[sup]دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
[۶] [/sup]
برخلاف باور عموم ++C دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
نوع داده ثابت را معرفی ننمودهاست. کلمه const کمی پیش از استفاده از این کلمه در ++C توسط زبان C بصورت رسمی بکار گرفته شد.
در بعضی حالات ++C تعداد کنترل نوع بیشتری نسبت به زبان C انجام میدهد. (برای اطلاعات بیشتر بخش «ناهماهنگی با C» را در پایین ببینید)
توضیحات با استفاده از // قبل از زبان C در زبان BCPL معرفی شده بود که مجدداً در زبان ++C به کار گرفته شد.
بعضی ویژگیهای ++C بعداً توسط C به کار گرفته شد مانند نحوه تعریف for، توضیحات به شکل ++C (با استفاده از //)، و کلمه inline با وجود اینکه تعریف این کلمه در C با تعریف آن در زبان ++C هماهنگی ندارد. همچنین در C ویژگیهایی معرفی شدهاست که در ++C وجود ندارند مانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ماکروهای قابل تغییر و استفاده بهتر از آرایهها به عنوان آرگومان. بعضی کامپایلرها این ویژگیها را پیاده نمودهاند اما در بقیه این ویژگیها موجب ناهماهنگی میگردد.
برنامه Hello World[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
برنامه زیر با استفاده از کتابخانه استاندارد و جریانهای خروجی یک متن را به خروجی استاندارد ارسال مینماید.
[ltr]# include <iostream> // provides std::cout
using namespace std;
int main(int argc, char *argv[])
{
cout <<"Hello, world!\n"; // prints "Hello world!"
return 0;
}
[/ltr]
ویژگیهای زبان[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
عملگرها[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
به بخش دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
عملگرهای سی و سی++ مراجعه نمایید
پیش پردازنده[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
++C بطور عمومی در سه فاز ترجمه میگردد: پیشپردازنده، ترجمه به کد object، پیوند (که دو مرحله آخر به عنوان عمل کامپایل شناخته میشود) در اولین مرحله در پیشپردازنده، شبهدستورات پیشپردازنده تغییرات لغوی بر روی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کد منبع ایجاد مینمایند و آن را به مراحل دیگر تحویل میدهند.
شبه دستورات پیشپردازنده با استفاده از کاراکتر # قبل از هر گونه فضای خالی آغاز گشته و رشتههایی را در کد منبع با فایل یا رشتههای دیگر با توجه به قوانین تعریف گشته توسط برنامهنویس جایگزین مینماید. این دستورات معمولاً اعمال زیر را انجام میدهند: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
جایگزینی ماکروها ، شمول فایلهای دیگر (برخلاف ویژگی سطح بالاتر مانند شمول دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ماجولها /دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
پکیجها /دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
یونیتها /دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کامپوننتها )، کامپایل شرطی و/یا شمول شرطی. به عنوان مثال:
[ltr]# include <iostream>
[/ltr]
که این دستور تمام سمبلها در دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
فایل سرایند کتابخانه استاندارد
را در فایل منبع وارد میسازد.
کاربرد معمول دیگر به عنوان ماکرو خوانده میشود:
[ltr]# define MY_ASSERT(x) assert(x)
[/ltr]
که کد (MY_ASSERT(x را با (assert(x در فایل منبع جایگزین مینماید؛ که این جایگزینی امکان کنترل استفاده از این تابع را در اختیار برنامهنویس قرار میدهد.
استفاده از ماکروها در عمل چندان توصیه نمیگردد چرا که امکان کنترل نوع آرگومانها را از بین برده در نتیجه ممکن است اشتباهاتی را وارد کد منبع نماید. طریقه دیگر برای انجام این کار استفاده از توابع درونخطی است.
علاوه بر شبهدستورات معمول تعدادی شبه دستور برای کنترل جریان کامپایل وجود دارد که امکان شمول یا عدمشمول قطعهای کد یا سایر ویژگیهای کامپایل را در اختیار ما قرار میدهد.
دستورات پیشپردازنده برای کاربردهای عددی نیز به کار میرود که هماکنون استفاده از
به جای
ترجیح داده میشود. این کار علاوه بر ایجاد کنترل نوع قوی مانع از گمراهی در فضاهای نام میگردد.
هدف کمیته استانداردسازی از بین بردن پیشپردازندهاست اما با توجه به خصوصیت مدولار ++C بعید به نظر میآید که این حذف امکانپذیر باشد.
قالبها[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
قالبها متفاوت با ماکروها هستند. در حالی که از هر دوی این ویژگیها در زمان کامپایل برای ایجاد کامپایل شرطی استفاده میشوند قالبها محدود به تغییرات لغوی و متنی نیستند. قالبها با آگاهی از معنا و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سیستم نوع در زبان استفاده شده و سایر ویژگیهای زمان کامپایل میتوانند از عملیات سطح بالا برای کنترل ترتیب اجرا براساس نوع پارامترها استفاده نمایند. ماکروها دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کنترل خود را بر کامپایل از طریق ویژگیهای از پیش تعیین شده انجام میدهند ولی قادر به ایجاد انواع جدید و کنترل نوع نیستند و فقط محدود به تغییرات متنی پیش از کامپایل هستند. به زبان دیگر ماکروها کنترل خود را با استفاده از نشانههای از پیش تعیین شده انجام میدهند اما همانند قالبها نمیتوانند نشانهها را خود ایجاد نمایند. قالبها ابزاری برای دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
چندریختی ایستا و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
برنامهنویسی جنریک است. مثلاً جایگزین معادل با استفاده از قالبها برای عبارت خطرناک
در پایین نشان داده شدهاست.
[ltr]template <typename T>
const T& max(const T& x, const T& y)
{
return x> y ? x : y;
}
[/ltr]
این قالب در سرآیند
تحت عنوان
قابل دسترسی است. معمولاً میتوان از کلمه کلیدی
بجای
استفاده کرد.
علاوه بر این قالبها یک ویژگی تورینگ-کامل هستند که به این معناست که هر برنامه قابل محاسبه توسط کامپیوتر را میتوان با استفاده از فرابرنامهنویسی قالبها نوشت.
بطور خلاصه استفاده از قالبها به معنای نوشتن هر تابع یا کلاس بااستفاده از تمامی انواعِ ممکن است، که نوع آن را پیش از کامپایل در قالب معین نمیکنیم.
اشیاء[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
سی++ چندین ویژگی شیگرا را زبان دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سی معرفی نمود معرفی کلاس چهار ویژگی که در زبانهای شیگرا و بعضاً غیر شیگرا حضور دارد یعنی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
انتزاع ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
بستهبندی ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
وراثت ، و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
چندریختی را فراهم کرد. اشیاء نمونههای ساخته شده از کلاس در زمان اجرا هستند. میتوان کلاس را نمونهای از قالبها دانست که چندین مورد از آنها بوجود میآید.
بستهبندی[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
بستهبندی به معنای جمعآوری عملیات و داده در یک محل میباشد. سی++ بستهبندی را با ایجاد امکان تعریف هر کلاس به صورت public, private, protected پیادهسازی نمودهاست. اعضای private فقط توسط اعضای کلاس و یا کلاسها دقیقاً بیان شده (friend) قابل دسترسی هستند. اعضای protected توسط کلاسهای ارث برده شده و اعضای کلاس و کلاسهای friend قابل دسترسی هستند.
در تعاریف شیگرا باید تنها توابعی بستهبندی گردند که باید از نحوه پیادهسازی این نوع بخصوص اطلاع داشته باشد. سی++ این ویژگی را با استفاده از توابع عضو و توابع دوست فراهم نموده اما قطعی نکردهاست. در سی++ این امکان وجود دارد که تمام نوع را عمومی تعریف نمایند اما در صورتی که نیاز باشد فقط بخشی از آن عمومی گردد در نتیجه این زبان نه تنها شیگرا است بلکه از مدلهای ضعیفتر همانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
برنامهنویسی مدولار پشتیبانی مینماید.
عموماً توصیه بر این است که تمام اعضا به صورت خصوصی یا حفاظت شده تبدیل گردند و فقط توابعی که باید توسط دیگر کلاسها به عنوان واسط استفاده شوند عمومی باقی بمانند.
وراثت[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
وراثت این امکان را ایجاد میکند که یک نوع ویژگی دیگر انواع را داشته باشد. وراثت از یک کلاس پایه میتواند عمومی، خصوصی یا حفاظت شده باشد. این تعیین سطح دسترسی مشخص میسازد آیا کلاسهای نامربوط و یا مشتق شده میتوانند به اعضای عمومی یا حفاظت شده کلاس پایه دسترسی داشته باشند. تنها وراثت عمومی به معنای وراثت به کار رفته بصورت عموم است. دو نوع دیگر وراثت به ندرت مورد استفاده قرار میگیرند. اگر تعیینکننده سطح دسترسی حذف شود سطح دسترسی برای کلاس خصوصی و برای ساختمان به صورت عمومی تعریف میگردد. کلاسهای پایه ممکن است بصورت مجازی تعریف شوند که به آن دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
وراثت مجازی گویند. وراثت مجازی تضمین میکند که فقط یک نمونه از کلاس پایه وجود داشته باشد و مشکلاتی همانند مشکلات دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
وراثت چندگانه بوجود نیاید.
وراثت چندگانه یکی از ویژگیهای مورد بحث در سی++ است. وراثت چندگانه امکان اشتقاق از چند کلاس پایه را فراهم مینماید که موجب بوجود آمدن گراف رابطه وراثت بسیار پیچیدهاست. به عنوان مثال «گربه پرنده» میتواند از کلاس «گربه» و کلاس «پستانداران پرنده» ارث برد. در زبانهای دیگر مانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سیشارپ و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
جاوا به صورت دیگری ویژگی مشابه را پیادهسازی مینماید هر کلاس میتواند از چندین واسط اشتقاق یابد اما فقط یک کلاس پایه برای اشتقاق وجود دارد (واسطها برخلاف کلاس پایه فقط تعریف هستند و هیچگونه پیادهسازی را شامل نمیگردند).
چندریختی[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
امکان استفاده از یک واسط برای چندین پیادهسازی فراهم مینماید و اشیاء در شرایط مختلف رفتار مختلفی از خود نشان میدهند.
سی++ دو نوع چندریختی در اختیار برنامهنویس قرار میدهد: چندریختی زمان کامپایل و چندریختی زمان اجرا. چندریختی زمان کامپایل امکان تصمیمگیریهای زمان اجرا را فراهم نمیسازد و چندریختی زمان اجرا اغلب موجب پایین آمدن بازدهی میگردد.
چندریختی ایستا[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
چندریختی ایستا شامل گرانبارسازی تابع، گرانبارسازی عملگر، آرگومان پیشفرض، و قالب کلاسها و تابع است.
چندریختی پویا[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
چندریختی پویا شامل دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
وراثت و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
توابع مجازی عضو است.
گرانبارسازی تابع[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
گرانبارسازی تابع امکان تعریف چندین تابع با نام یکسان اما با تعداد آرگومانهای متفاوت را فراهم میسازد. این توابع از طریق تعداد پارامترها یا نوع رسمی آنها شناسایی میگردند. در نتیجه یک تابع ممکن است با توجه به موقعیت استفاده معنای مختلفی داشته باشد. نوع داده برگشتی برای تشخیص توابع از یکدیگر مورد استفاده قرار نمیگیرد.
گرانبارسازی عملگر[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
بطور مشابه دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
گرانبارسازی عملگر امکان استفاده از یک عملگر مشخص میشود که عملکرد متفاوتی با توجه به عملوندهای خود دارد. این عملگرهای گرانبار شده موجب فراخوانی تابع مشخصی متناسب با آن موقعیت میگردند. گرانبارسازی عملگر ترتیب اجرا یا تعداد عملوندهای یک عملگر را تغییر نمیدهد. عملگرهای
نمیتوانند گرانبار شوند.
آرگومان پیشفرض[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
آرگومان پیشفرض در شرایطی به کار میرود که تعیین یک مقدار مشخص برای یک آرگومان نیاز به تعریف یک تابع جدید را برطرف میسازد. هنگام استفاده از این مشخصه باید دقت شود که تابعهای گرانبار شده و تابعهای دارای آرگومان پیشفرض با یکدیگر تداخل نداشته باشند به عنوان مثال:
[ltr]// function with default argument but also an overloaded function
int strcpy(char *str1, char *str2, short unsigned n=65535);
// second overloaded function
int strcpy(char *str1, char *str2);
[/ltr]
کد بالا در صورت استفاده از یک آرگومان
برای
درست کامپایل میگردد اما اگر آرگومانی تعیین نگردد درست عمل نخواهد کرد. چرا که کامپایلر نخواهد دانست که باید از مقدار پیشفرض استفاده نماید یا از تابع بدون آرگومان.
ساختار برنامهها[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
و include) و به این فایلهای الحاقی، (Header) گفته میشود. فایلهای الحاقی حاوی کدها یا نسخههای اجرایی کلاسها (مجموعه متغیرها و توابع) میباشند که در بدنه اصلی برنامه از آنها استفاده میشود. معمولاً هر کلاس (که تعریف یک نوع دادهای با متدهای مربوط به آن است) را در یک سرآیند مینویسند. هر دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سرآیند که معمولاً تنها تعاریف (معرفی) کلاس را در خود دارد به همراه فایلهای پیادهسازی به زبان ++C یا پیادهسازیهای کامپایل شده (به صورت فایل اشیاء مانند dll یا so یا …) میتواند به کار برده شود. به مجموعههای یکپارچهای از کلاسهای پیادهسازی شده (به صورت فایلهای سرآیند با پیادهسازیهای کد یا اشیای زبان ماشین) که برای دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
برنامهنویسی به کار میروند، یک کتابخانه ++C گفته میشود و قدرت اصلی این زبان در امکان به کارگیری کتابخانههای آماده میباشد. کتابخانههای بزرگ ++C مانند STL, MFC, QT و … مجموعه قدرتمندی برای تولید برنامه در این زبان ایجاد کردهاند.[sup]دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
[۷] [/sup]
نمونه برنامه سی پلاس پلاس[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
الگوریتمی بنویسید که ارتفاع و قاعده مثلثی را از ورودی گرفته و مساحت آن را محاسبه و در خروجی چاپ کند
[ltr]# include <iostream>
using namespace std;
int main()
{
float masahat, ghaede, ertefa;
cout << "ertefae mosallas ra vared konid: ";
cin >> ertefa;
cout << "ghaedeye mosallas ra vared konid: ";
cin >> ghaede;
masahat=ertefa*ghaede/2;
cout << "masahate mosallas: " << masahat << endl;
}
[/ltr]
تست کد C++
برای تست برنامههای نوشته شده با زبان C++ روشهای مختلفی وجود دارد، برخی از ویرایشگرهای مانند visual studio ابزاری برای این منظور دارند ولی برای تست دقیق تر بهتر است از ابزارهای با دقت بالا استفاده کرد، بهینهسازی کد و بالا بردن کارایی از مزیتهای تست کد است. C/C++Test راهکاری یکپارچه برای خودکارسازی محدوده وسیعی از شیوههای تضمین کیفیت برنامههای تولید شده با زبانهای C و ++C میباشد. C/C++Test قابلیت تولید تست واحد (unit test) و تحلیل سورس-کد (static analysis) تحت زبان ++C را داراست. این ابزار امکان خودکارسازی تستهای برنامهنویسی را همراه با اندازهگیری میزان پوشش کد (code coverage) فراهم میسازد. همچنین کیفیت سورس-کد را از ابعاد مختلف کارکردی، کارایی، امنیت و نگهداشت تحلیل میکند. امکان یکپارچه سازی با ابزار SAOTest جهت انجام تست کارکردی و ابزار LoadTest جهت انجام تست کارایی در سطح ماجولهای برنامهنویسی را نیز داراست.
منبع:ویکی پدیا
سیمولا دارای ویژگیهایی مناسب برای ساخت برنامههای بسیار بزرگ است اما برای استفادهٔ عملی بسیار کند است اما دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
بیسیپیال با وجود سرعت بسیار زیاد برای ساخت برنامههای بزرگ بسیار سطح پایین است. زمانی که استراستروپ کار خود را در آزمایشگاههای بل (Bell Labs) آغاز نمود با مشکل تحلیل دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
هسته دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
یونیکس با توجه به دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
محاسبات توزیع شده روبرو شده بود. با یادآوری تجربیات خود در دوران دکترا، او زبان C را با استفاده از ویژگیهای سیمولا گسترش داد. C به این دلیل انتخاب شد که یک زبان عمومی، سریع، قابل حمل، و در سطح گستردهای در حال استفاده بود. علاوه بر C و سیمولا زبانهای دیگری مانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ALGOL ۶۸ ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ADA , دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
CLU , دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ML نیز بر ساختار این زبان جدید اثر گذاشت. در ابتدا ویژگیهای کلاس، کلاسهای مشتق شده، کنترل نوع قوی، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
توابع درونخطی و آرگومانهای پیشفرض از طریق دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
Cfront به C اضافه شد. اولین نسخهٔ تجاری در سال ۱۹۸۵ ارائه شد.
در سال ۱۹۸۳ نام زبان از «C با کلاس» به ++C تغییر یافت. ویژگیهای دیگر شامل توابع مجازی، سربارگزاری عملگر و نام تابع، ارجاعات، ثوابت، کنترل حافظه توسط کاربر بهصورت آزاد، کنترل نوع بهتر، و توضیحات یکخطی به صورت BCPL با استفاده از «//» نیز به آن اضافه شد. در سال ۱۹۸۵ اولین نسخه زبان برنامهنویسی ++C انتشار یافت و مرجع مهمی برای این زبان فراهم شد در حالی که هیچ استاندارد رسمیای وجود نداشت. در سال ۱۹۸۹ ویرایش ۲٫۰ از زبان ++C ارائه شد. ویژگیهای جدیدی مانند ارثبری چندگانه، کلاسهای انتزاعی، اعضای ایستای توایع، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
اعضای ثابت تابع ، و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
اعضای حفاظت شده به آن اضافه شد. در سال ۱۹۹۰ «راهنمای مرجع ++C» منتشر شد. این کار بنیان استانداردهای بعدی شد. آخرین ویژگیهای اضافه شده شامل موارد زیر بودند: قالب توابع، استثناها، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
فضاهای نام ، تبدیلات جدید، و یک نوع دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
داده منطقی .
در حین تکامل ++C کتابخانهٔ استاندارد نیز بهوجود آمد. اولین نسخهٔ کتاب استاندارد شامل کتابخانهٔ جریانات I/O بود که جایگزین دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
printf و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
scanf شد. در ادامه مهمترین ویژگی اضافه شده Standard Template Library بودهاست.
استاندارد زبان[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
استاندارد سازی سی++ توسط یک گروه از تشکیلات دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ISO انجام میشود.[sup]دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
[۴] [/sup] تاکنون ۵ نسخه از استاندارد این زبان منتشر شده است؛ و استاندارد C++17 نیز برای انتشار در سال ۲۰۱۷ برنامهریزی شده است.
سال
استاندارد سی++
نام غیررسمی
۱۹۹۸
ISO/IEC 14882:1998
C++98
۲۰۰۳
ISO/IEC 14882:2003
C++03
۲۰۰۷
ISO/IEC TR 19768:2007
C++07/TR1
۲۰۱۱
ISO/IEC 14882:2011
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++11
۲۰۱۴
ISO/IEC 14882:2014[sup]دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
[۵] [/sup]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++14
۲۰۱۷
هنوز تعیین نشده.
C++17
در سال ۱۹۹۸ برای اولین بار پس از سالها کار کمیته مشترک دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ANSI –دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ISO این زبان تحت عنوان ISO/IEC 14882:1998 و نام غیررسمی C++98 استاندارد سازی شد. بعدها در سال ۲۰۰۳ نسخه جدیدی از استاندارد یعنی ISO/IEC 14882:2003 انتشار یافت و برخی از مشکلات و باگهای C++98 در آن رفع شد.
در سال ۲۰۰۵ یک گزارش فنی به اسم «دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
گزارش فنی کتابخانهٔ ۱ » (که معمولاً بصورت اختصار TR۱ خوانده میشود) منتشر شد که مواردی جدید را برای اضافه کردن به دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کتابخانه استاندارد دربرداشت با این که این گزارش قسمتی از استاندارد نبود ولی بعدها در نسخه بعدی استاندارد یعنی C++11 اضافه شد.
نسخه بعدی با نام غیررسمی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++11 و استاندارد ISO/IEC 14882:2011 در تاریخ ۱۲ اوت ۲۰۱۱ مورد تأیید دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سازمان بینالمللی استانداردسازی قرار گرفت و جایگزین دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++03 شد.
در سال ۲۰۱۴ آخرین نسخه از این زبان تا حال حاضر در در تاریخ ۱۸ اوت ۲۰۱۴ با نام غیررسمی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++14 و استاندارد ISO/IEC 14882:2014 منتشر شد. هدف اصلی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++14 همانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++03 رفع مشکلات و همچنین اضافه کردن ویژگیها و بهبود جزیی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++11 بوده است.
انتشار نسخه بعدی استاندارد این زبان با نام غیررسمی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++17 برای سال ۲۰۱۷ برنامهریزی شده است.
در حالی که ++C به هیچ مؤسسهای وابسته نیست این مستندات بهصورت آزادانه در دسترس نیستند. گرچه نسخههای نهایی نشده(draft) این اسناد در دسترس همگان قرار میگیرد.
نام ++C[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
این نام منسوب به ریک ماسکیتی (اواسط ۱۹۸۳) است و برای اولین بار در دسامبر سال ۱۹۸۳ به کار برده شد. در طول مدت تحقیق این زبان بنام «C جدید» و بعدها «C با کلاس» خوانده شد. در دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
علوم کامپیوتر هنوز هم ++C به عنوان دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ابرساختار C شناخته میشود. آخرین نام از عملگر ++ در زبان C (که برای افزایش مقدار متغیر به اندازهٔ یک واحد بکار میرود) و یک عرف معمول برای نشان دادن افزایش قابلیتها توسط + ناشی گشتهاست. با توجه به نقل قولی از استراستروپ: «این نام ویژگیها تکاملی زبان در C را نشان میدهد.» +C نام زبانی غیرمرتبط به این زبان است.
استراستروپ مبدأ این نام را در فصل اول کتاب خود «زبان برنامهنویسی ++C» اشاره مینماید که معنی دیگر ++C را میتوان در ضمائم کتاب دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
جرج ارول بنام ۱۹۸۴ یافت. در سه قسمت از زبان تخیلی Newspeak «کلمات C» برای اشاره به لغات دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
فنی و حرفهای بکار میرود. «دو علامت +» برای ایجاد صفات عالی از صفات Newspeak به کار میرفت بنابراین ++C به معنای زبانی با بیشترین شباهت به C است.
وقتی که به صورت خصوصی از ریک ماسکیتی در مورد این اسم سؤال شد او در جواب گفت که این اسم بصورت خودمانی در بین آنها به کار میرفتهاست و تصور نمیکردند که این نام بصورت نام رسمی این زبان درآید.
فلسفه[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
در کتاب «طراحی و تکامل ++C» استراستروپ قوانین مورد استفاده در طراحی ++C را بیان مینماید. دانستن این قوانین به فهمیدن نحوه عملکرد ++C و چرایی آن کمک میکند. جزئیات بیشتر در کتاب قابل دسترسی است:
- ++C طراحی شدهاست تا یک زبان عمومی با کنترل نوع ایستا و همانند C دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
قابل حمل و پربازده باشد. - ++C طراحی شدهاست تا مستقیماً و بصورت جامع از چندین شیوه برنامهنویسی (برنامهنویسی ساختیافته، برنامهنویسی شیگرا، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
انتزاع داده ، و برنامهنویسی جنریک) - ++C طراحی شدهاست تا به برنامهنویس امکان انتخاب دهد حتی اگر این انتخاب اشتباه باشد.
- ++C طراحی شدهاست تا حداکثر تطابق با C وجود داشته باشد و یک انتقال راحت از C را ممکن سازد.
- ++C از بکاربردن ویژگیهای خاص که مانع از عمومی شدن است خودداری مینماید.
- ++C از ویژگیهایی که بکار برده نمیشوند استفاده نمیکند.
- ++C طراحی شدهاست تا بدون یک محیط پیچیده عمل نماید.
ویرایش ]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کتابخانه استاندارد
سی++
- دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ios - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
iostream - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
iomanip - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
sstream
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کتابخانه قالب استاندارد
- دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
vector - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
deque - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
list - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
map - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
set - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
stack - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
queue - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
bitset - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
algorithm - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
functional - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
iterator
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C++11
- دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
unordered_map - دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
unordered_set
- دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ن
- دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ب
- دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
و
هسته زبان و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کتابخانه استاندارد ++C است. این کتابخانه شامل بیشتر بخشهای دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
STL و کتابخانه استاندارد C است. بیشتر کتابخانههای ++C در استاندارد وجود ندارند و یا استفاده از تعریف قابلیت پیوند کتابخانهها را میتوان در زبانهایی مانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
فرترن ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
C ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
پاسکال ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
بیسیک نوشته شوند. البته با توجه به ویژگیهای کامپایلر مشخص خواهد شد که کدام زبان را میتوان استفاده نمود.
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کتابخانه استاندارد ++C شامل کتابخانه استاندارد C با یک سری تغییرات برای بهبود عملکرد است. بخش بزرگ بعدی این کتابخانه دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
STL است. STL شامل ابزار بسیار قدرتمندی مانند نگهدارندهها (مانند vector و list)، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
تکرارکنندهها (دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
اشارهگرهای عمومی شده) برای شبیهسازی دسترسی مانند آرایه دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
الگوریتمهایی برای جستجو و مرتبسازی در آنها وجود دارند. نقشهها (نقشههای چندگانه) (دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
آرایه شرکتپذیر ) و مجموعهها (مجموعههای چندگانه) واسطهای عمومی فراهم میسازند. در نتیجه با استفاده از قالب تابع، الگوریتمهای جنریک با هر نگهدارنده و دارای تکرارکننده عمل نماید. همانند C ویژگیهای کتابخانه را میتوان با استفاده از شبه دستور include# شامل یک سرآیند استاندارد اضافه نمود. c دارای دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
۶۹ کتابخانه استاندارد است که ۱۹ تا از آنها نامناسب تشخیص داده شدهاند.
استفاده از کتابخانه استاندارد - مانند std::vector یا std:

STL در آغاز محصولی جداگانه از HP و سپس SGL پیش از ادغام در کتابخانه استاندارد ++C بودهاست. استاندارد عبارت STL را بکار نمیبرد بلکه آن را بخشی از کتابخانه میداند اما مردم هنوز هم آن را برای جداسازی بخشهای مختلف کتابخانه با این نام بکار میبرند. (جریانهای ورودی/خروجی، جهانیسازی، تشخیص، زیرمجموعه کتابخانه C)
بیشتر کامپایلرها کتابخانه استاندارد و STL را پیادهسازی مینماید. پیادهسازیهای مستقلی نیز همانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
STLport نیر وجود دارند. پروژههای دیگر نیز پیادهسازیهای خود را از STL با توجه به اهداف خود بوجود میآورند.
ویژگیهای معرفی شده در ++C[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
در مقایسه با C زبان ++C ویژگیهای جدیدی را معرفی نمودهاست مانند تعریف متغیر به عنوان عبارت، تغییر نوعهای همانند تابع، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
نو /دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
حذف ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
نوع داده bool، توابع درونخطی، آرگومان پیشفرض، گرانبارسازی عملگر و تابع، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
فضای نام و عملگر تعیین حوزه ::، کلاسها (شامل تمام ویژگیهای مربوط به کلاسها همانند وراثت، اعضای تابع، توابع مجازی، کلاسهای انتزاعی، و سازندهها)، قالبها، پردازش استثناء، کنترل نوع زمان اجرا، عملگرهای سربار شده ورودی (<<) و خروجی (>>).[sup]دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
[۶] [/sup]
برخلاف باور عموم ++C دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
نوع داده ثابت را معرفی ننمودهاست. کلمه const کمی پیش از استفاده از این کلمه در ++C توسط زبان C بصورت رسمی بکار گرفته شد.
در بعضی حالات ++C تعداد کنترل نوع بیشتری نسبت به زبان C انجام میدهد. (برای اطلاعات بیشتر بخش «ناهماهنگی با C» را در پایین ببینید)
توضیحات با استفاده از // قبل از زبان C در زبان BCPL معرفی شده بود که مجدداً در زبان ++C به کار گرفته شد.
بعضی ویژگیهای ++C بعداً توسط C به کار گرفته شد مانند نحوه تعریف for، توضیحات به شکل ++C (با استفاده از //)، و کلمه inline با وجود اینکه تعریف این کلمه در C با تعریف آن در زبان ++C هماهنگی ندارد. همچنین در C ویژگیهایی معرفی شدهاست که در ++C وجود ندارند مانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ماکروهای قابل تغییر و استفاده بهتر از آرایهها به عنوان آرگومان. بعضی کامپایلرها این ویژگیها را پیاده نمودهاند اما در بقیه این ویژگیها موجب ناهماهنگی میگردد.
برنامه Hello World[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
برنامه زیر با استفاده از کتابخانه استاندارد و جریانهای خروجی یک متن را به خروجی استاندارد ارسال مینماید.
[ltr]# include <iostream> // provides std::cout
using namespace std;
int main(int argc, char *argv[])
{
cout <<"Hello, world!\n"; // prints "Hello world!"
return 0;
}
[/ltr]
ویژگیهای زبان[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
عملگرها[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
به بخش دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
عملگرهای سی و سی++ مراجعه نمایید
پیش پردازنده[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
++C بطور عمومی در سه فاز ترجمه میگردد: پیشپردازنده، ترجمه به کد object، پیوند (که دو مرحله آخر به عنوان عمل کامپایل شناخته میشود) در اولین مرحله در پیشپردازنده، شبهدستورات پیشپردازنده تغییرات لغوی بر روی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کد منبع ایجاد مینمایند و آن را به مراحل دیگر تحویل میدهند.
شبه دستورات پیشپردازنده با استفاده از کاراکتر # قبل از هر گونه فضای خالی آغاز گشته و رشتههایی را در کد منبع با فایل یا رشتههای دیگر با توجه به قوانین تعریف گشته توسط برنامهنویس جایگزین مینماید. این دستورات معمولاً اعمال زیر را انجام میدهند: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
جایگزینی ماکروها ، شمول فایلهای دیگر (برخلاف ویژگی سطح بالاتر مانند شمول دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ماجولها /دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
پکیجها /دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
یونیتها /دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کامپوننتها )، کامپایل شرطی و/یا شمول شرطی. به عنوان مثال:
[ltr]# include <iostream>
[/ltr]
که این دستور تمام سمبلها در دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
فایل سرایند کتابخانه استاندارد
کد:
iostream
را در فایل منبع وارد میسازد.
کاربرد معمول دیگر به عنوان ماکرو خوانده میشود:
[ltr]# define MY_ASSERT(x) assert(x)
[/ltr]
که کد (MY_ASSERT(x را با (assert(x در فایل منبع جایگزین مینماید؛ که این جایگزینی امکان کنترل استفاده از این تابع را در اختیار برنامهنویس قرار میدهد.
استفاده از ماکروها در عمل چندان توصیه نمیگردد چرا که امکان کنترل نوع آرگومانها را از بین برده در نتیجه ممکن است اشتباهاتی را وارد کد منبع نماید. طریقه دیگر برای انجام این کار استفاده از توابع درونخطی است.
علاوه بر شبهدستورات معمول تعدادی شبه دستور برای کنترل جریان کامپایل وجود دارد که امکان شمول یا عدمشمول قطعهای کد یا سایر ویژگیهای کامپایل را در اختیار ما قرار میدهد.
دستورات پیشپردازنده برای کاربردهای عددی نیز به کار میرود که هماکنون استفاده از
کد:
const
به جای
کد:
#define
ترجیح داده میشود. این کار علاوه بر ایجاد کنترل نوع قوی مانع از گمراهی در فضاهای نام میگردد.
هدف کمیته استانداردسازی از بین بردن پیشپردازندهاست اما با توجه به خصوصیت مدولار ++C بعید به نظر میآید که این حذف امکانپذیر باشد.
قالبها[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
قالبها متفاوت با ماکروها هستند. در حالی که از هر دوی این ویژگیها در زمان کامپایل برای ایجاد کامپایل شرطی استفاده میشوند قالبها محدود به تغییرات لغوی و متنی نیستند. قالبها با آگاهی از معنا و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سیستم نوع در زبان استفاده شده و سایر ویژگیهای زمان کامپایل میتوانند از عملیات سطح بالا برای کنترل ترتیب اجرا براساس نوع پارامترها استفاده نمایند. ماکروها دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
کنترل خود را بر کامپایل از طریق ویژگیهای از پیش تعیین شده انجام میدهند ولی قادر به ایجاد انواع جدید و کنترل نوع نیستند و فقط محدود به تغییرات متنی پیش از کامپایل هستند. به زبان دیگر ماکروها کنترل خود را با استفاده از نشانههای از پیش تعیین شده انجام میدهند اما همانند قالبها نمیتوانند نشانهها را خود ایجاد نمایند. قالبها ابزاری برای دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
چندریختی ایستا و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
برنامهنویسی جنریک است. مثلاً جایگزین معادل با استفاده از قالبها برای عبارت خطرناک
کد:
#define max(x, y) ((x)> (y) ? (x) : (y))
در پایین نشان داده شدهاست.
[ltr]template <typename T>
const T& max(const T& x, const T& y)
{
return x> y ? x : y;
}
[/ltr]
این قالب در سرآیند
کد:
algorithm
تحت عنوان
کد:
std::max()
قابل دسترسی است. معمولاً میتوان از کلمه کلیدی
کد:
class
بجای
کد:
typename
استفاده کرد.
علاوه بر این قالبها یک ویژگی تورینگ-کامل هستند که به این معناست که هر برنامه قابل محاسبه توسط کامپیوتر را میتوان با استفاده از فرابرنامهنویسی قالبها نوشت.
بطور خلاصه استفاده از قالبها به معنای نوشتن هر تابع یا کلاس بااستفاده از تمامی انواعِ ممکن است، که نوع آن را پیش از کامپایل در قالب معین نمیکنیم.
اشیاء[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
سی++ چندین ویژگی شیگرا را زبان دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سی معرفی نمود معرفی کلاس چهار ویژگی که در زبانهای شیگرا و بعضاً غیر شیگرا حضور دارد یعنی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
انتزاع ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
بستهبندی ، دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
وراثت ، و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
چندریختی را فراهم کرد. اشیاء نمونههای ساخته شده از کلاس در زمان اجرا هستند. میتوان کلاس را نمونهای از قالبها دانست که چندین مورد از آنها بوجود میآید.
بستهبندی[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
بستهبندی به معنای جمعآوری عملیات و داده در یک محل میباشد. سی++ بستهبندی را با ایجاد امکان تعریف هر کلاس به صورت public, private, protected پیادهسازی نمودهاست. اعضای private فقط توسط اعضای کلاس و یا کلاسها دقیقاً بیان شده (friend) قابل دسترسی هستند. اعضای protected توسط کلاسهای ارث برده شده و اعضای کلاس و کلاسهای friend قابل دسترسی هستند.
در تعاریف شیگرا باید تنها توابعی بستهبندی گردند که باید از نحوه پیادهسازی این نوع بخصوص اطلاع داشته باشد. سی++ این ویژگی را با استفاده از توابع عضو و توابع دوست فراهم نموده اما قطعی نکردهاست. در سی++ این امکان وجود دارد که تمام نوع را عمومی تعریف نمایند اما در صورتی که نیاز باشد فقط بخشی از آن عمومی گردد در نتیجه این زبان نه تنها شیگرا است بلکه از مدلهای ضعیفتر همانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
برنامهنویسی مدولار پشتیبانی مینماید.
عموماً توصیه بر این است که تمام اعضا به صورت خصوصی یا حفاظت شده تبدیل گردند و فقط توابعی که باید توسط دیگر کلاسها به عنوان واسط استفاده شوند عمومی باقی بمانند.
وراثت[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
وراثت این امکان را ایجاد میکند که یک نوع ویژگی دیگر انواع را داشته باشد. وراثت از یک کلاس پایه میتواند عمومی، خصوصی یا حفاظت شده باشد. این تعیین سطح دسترسی مشخص میسازد آیا کلاسهای نامربوط و یا مشتق شده میتوانند به اعضای عمومی یا حفاظت شده کلاس پایه دسترسی داشته باشند. تنها وراثت عمومی به معنای وراثت به کار رفته بصورت عموم است. دو نوع دیگر وراثت به ندرت مورد استفاده قرار میگیرند. اگر تعیینکننده سطح دسترسی حذف شود سطح دسترسی برای کلاس خصوصی و برای ساختمان به صورت عمومی تعریف میگردد. کلاسهای پایه ممکن است بصورت مجازی تعریف شوند که به آن دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
وراثت مجازی گویند. وراثت مجازی تضمین میکند که فقط یک نمونه از کلاس پایه وجود داشته باشد و مشکلاتی همانند مشکلات دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
وراثت چندگانه بوجود نیاید.
وراثت چندگانه یکی از ویژگیهای مورد بحث در سی++ است. وراثت چندگانه امکان اشتقاق از چند کلاس پایه را فراهم مینماید که موجب بوجود آمدن گراف رابطه وراثت بسیار پیچیدهاست. به عنوان مثال «گربه پرنده» میتواند از کلاس «گربه» و کلاس «پستانداران پرنده» ارث برد. در زبانهای دیگر مانند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سیشارپ و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
جاوا به صورت دیگری ویژگی مشابه را پیادهسازی مینماید هر کلاس میتواند از چندین واسط اشتقاق یابد اما فقط یک کلاس پایه برای اشتقاق وجود دارد (واسطها برخلاف کلاس پایه فقط تعریف هستند و هیچگونه پیادهسازی را شامل نمیگردند).
چندریختی[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
امکان استفاده از یک واسط برای چندین پیادهسازی فراهم مینماید و اشیاء در شرایط مختلف رفتار مختلفی از خود نشان میدهند.
سی++ دو نوع چندریختی در اختیار برنامهنویس قرار میدهد: چندریختی زمان کامپایل و چندریختی زمان اجرا. چندریختی زمان کامپایل امکان تصمیمگیریهای زمان اجرا را فراهم نمیسازد و چندریختی زمان اجرا اغلب موجب پایین آمدن بازدهی میگردد.
چندریختی ایستا[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
چندریختی ایستا شامل گرانبارسازی تابع، گرانبارسازی عملگر، آرگومان پیشفرض، و قالب کلاسها و تابع است.
چندریختی پویا[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
چندریختی پویا شامل دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
وراثت و دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
توابع مجازی عضو است.
گرانبارسازی تابع[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
گرانبارسازی تابع امکان تعریف چندین تابع با نام یکسان اما با تعداد آرگومانهای متفاوت را فراهم میسازد. این توابع از طریق تعداد پارامترها یا نوع رسمی آنها شناسایی میگردند. در نتیجه یک تابع ممکن است با توجه به موقعیت استفاده معنای مختلفی داشته باشد. نوع داده برگشتی برای تشخیص توابع از یکدیگر مورد استفاده قرار نمیگیرد.
گرانبارسازی عملگر[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
بطور مشابه دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
گرانبارسازی عملگر امکان استفاده از یک عملگر مشخص میشود که عملکرد متفاوتی با توجه به عملوندهای خود دارد. این عملگرهای گرانبار شده موجب فراخوانی تابع مشخصی متناسب با آن موقعیت میگردند. گرانبارسازی عملگر ترتیب اجرا یا تعداد عملوندهای یک عملگر را تغییر نمیدهد. عملگرهای
کد:
. :: .* ?
نمیتوانند گرانبار شوند.
آرگومان پیشفرض[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
آرگومان پیشفرض در شرایطی به کار میرود که تعیین یک مقدار مشخص برای یک آرگومان نیاز به تعریف یک تابع جدید را برطرف میسازد. هنگام استفاده از این مشخصه باید دقت شود که تابعهای گرانبار شده و تابعهای دارای آرگومان پیشفرض با یکدیگر تداخل نداشته باشند به عنوان مثال:
[ltr]// function with default argument but also an overloaded function
int strcpy(char *str1, char *str2, short unsigned n=65535);
// second overloaded function
int strcpy(char *str1, char *str2);
[/ltr]
کد بالا در صورت استفاده از یک آرگومان
کد:
n
برای
کد:
strcpy
درست کامپایل میگردد اما اگر آرگومانی تعیین نگردد درست عمل نخواهد کرد. چرا که کامپایلر نخواهد دانست که باید از مقدار پیشفرض استفاده نماید یا از تابع بدون آرگومان.
ساختار برنامهها[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
و include) و به این فایلهای الحاقی، (Header) گفته میشود. فایلهای الحاقی حاوی کدها یا نسخههای اجرایی کلاسها (مجموعه متغیرها و توابع) میباشند که در بدنه اصلی برنامه از آنها استفاده میشود. معمولاً هر کلاس (که تعریف یک نوع دادهای با متدهای مربوط به آن است) را در یک سرآیند مینویسند. هر دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سرآیند که معمولاً تنها تعاریف (معرفی) کلاس را در خود دارد به همراه فایلهای پیادهسازی به زبان ++C یا پیادهسازیهای کامپایل شده (به صورت فایل اشیاء مانند dll یا so یا …) میتواند به کار برده شود. به مجموعههای یکپارچهای از کلاسهای پیادهسازی شده (به صورت فایلهای سرآیند با پیادهسازیهای کد یا اشیای زبان ماشین) که برای دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
برنامهنویسی به کار میروند، یک کتابخانه ++C گفته میشود و قدرت اصلی این زبان در امکان به کارگیری کتابخانههای آماده میباشد. کتابخانههای بزرگ ++C مانند STL, MFC, QT و … مجموعه قدرتمندی برای تولید برنامه در این زبان ایجاد کردهاند.[sup]دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
[۷] [/sup]
نمونه برنامه سی پلاس پلاس[دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ویرایش ]
الگوریتمی بنویسید که ارتفاع و قاعده مثلثی را از ورودی گرفته و مساحت آن را محاسبه و در خروجی چاپ کند
[ltr]# include <iostream>
using namespace std;
int main()
{
float masahat, ghaede, ertefa;
cout << "ertefae mosallas ra vared konid: ";
cin >> ertefa;
cout << "ghaedeye mosallas ra vared konid: ";
cin >> ghaede;
masahat=ertefa*ghaede/2;
cout << "masahate mosallas: " << masahat << endl;
}
[/ltr]
تست کد C++
برای تست برنامههای نوشته شده با زبان C++ روشهای مختلفی وجود دارد، برخی از ویرایشگرهای مانند visual studio ابزاری برای این منظور دارند ولی برای تست دقیق تر بهتر است از ابزارهای با دقت بالا استفاده کرد، بهینهسازی کد و بالا بردن کارایی از مزیتهای تست کد است. C/C++Test راهکاری یکپارچه برای خودکارسازی محدوده وسیعی از شیوههای تضمین کیفیت برنامههای تولید شده با زبانهای C و ++C میباشد. C/C++Test قابلیت تولید تست واحد (unit test) و تحلیل سورس-کد (static analysis) تحت زبان ++C را داراست. این ابزار امکان خودکارسازی تستهای برنامهنویسی را همراه با اندازهگیری میزان پوشش کد (code coverage) فراهم میسازد. همچنین کیفیت سورس-کد را از ابعاد مختلف کارکردی، کارایی، امنیت و نگهداشت تحلیل میکند. امکان یکپارچه سازی با ابزار SAOTest جهت انجام تست کارکردی و ابزار LoadTest جهت انجام تست کارایی در سطح ماجولهای برنامهنویسی را نیز داراست.
منبع:ویکی پدیا