جزوه تایپ شده برنامه نویسی شبکه
با پایتون سی شارپ شیرافکن دیوید ب. ماکوفسکی مترجم عین الله جعفرنژاد قمی محم علمی کاربردی ضا ماهر پیام نور علی کریم
ً “” “” “” ++ “” “” “” # () (). # ++ “”. ً ++ ::
?:
*
” “. ” ” . : ++
++ ً ( .*) ++ 
++ (). ” &&” ” ” ||
: ()
++ () () ً : (). ++ () ++[69]
: ++ (ً ). () () ++ / : ( /) () ()، ً ً، از آن تابع وجود نداشته باشد. از این رو، در زمان کامپایل، تنها با توجه به یک اشاره گر کلاس پایه، ممکن است امکان تعیین نوع شی و بنابراین تابع صحیح برای فراخوانی وجود نداشته باشد. بنابراین تصمیم به زمان اجرا موکول می شود. به این امر اعزام پویا می گویند . توابع یا روش های عضو مجازی [72]اجازه می دهد تا خاص ترین پیاده سازی تابع، با توجه به نوع زمان اجرا واقعی شی، فراخوانی شود. در پیاده سازی های C++، این معمولاً با استفاده از جداول توابع مجازی انجام می شود . اگر نوع شی مشخص باشد، ممکن است با اضافه کردن یک نام کلاس کاملاً واجد شرایط قبل از فراخوانی تابع، از این موضوع دور زده شود، اما به طور کلی فراخوانیهای توابع مجازی در زمان اجرا حل میشوند.
علاوه بر عملکردهای عضو استاندارد، اضافه بارهای اپراتور و تخریب کننده ها می توانند مجازی باشند. یک قانون غیر دقیق مبتنی بر تجربه عملی بیان می کند که اگر هر عملکردی در کلاس مجازی است، تخریب کننده نیز () ()
“” () = ++ : [73]
[ capture ]( ) -> { }
++: [ ضبط ] < > ( ) -> { }
() :
[ عکسبرداری ] { }
:
[]( ) { + ; } // []( ) -> { + ; } // [capture]
[74] [75] ()، () [76] [77]
++، [78] [79] [80] () [81]#<>
#<>
#<>
() {
{
:: < > { };
{ ( )}; // ::(–)
}
// ::() ( :: & ) {
:: << “: ” << () << ” ;
}
// (::)
( :: ) {
:: << “: ” << () << ” ;
}
// (::)
(…) {
:: << “” ;
}
}
[82]
§ ++ [ ویرایش ]
++ ً ً ++ ()، ++ :{} ;
++: /با نام شمارش دارد (مثلاً Color::Redبرای اولین شمارشگر در مثال زیر)، مگر اینکه از یک using enumاعلان (معرفی شده در C++20 ) استفاده شده باشد. تا شمارش كنندگان را به محدوده فعلي وارد كند. یک شمارش محدوده با عبارت enum class(یا enum struct) مشخص می شود. مثلا:
enum class Color { Red , Green , Blue };
نوع زیربنایی یک شمارش یک نوع انتگرال تعریف شده توسط پیاده ً “” :
: { }; // ” : ; // ً «» ”” ++++ : ++
++ : ++ ++ [ شفاف سازی ] ; ( )، ()، /( )، پشتیبانی اتمی (اجازه دادن به یک متغیر برای خواندن یا نوشتن حداکثر توسط یک رشته در یک زمان بدون هیچ گونه هماهنگی خارجی)، ابزارهای زمانی (اندازه گیری، دریافت زمان جاری و غیره)، سیستمی برای تبدیل گزارش خطا که انجام نمی دهد. از استثناهای C++ در استثناهای C++، یک مولد اعداد تصادفی و یک نسخه کمی تغییر یافته از کتابخانه استاندارد C (برای مطابقت با سیستم نوع C++) استفاده کنید.
بخش بزرگی از کتابخانه ++C بر اساس کتابخانه قالب استاندارد (STL) است. ابزارهای مفید ارائه شده توسط STL شامل کانتینرهایی مانند مجموعه اشیاء (مانند بردارها و لیست ها )، تکرار کننده هایی است که دسترسی آرایه مانند به کانتینرها را فراهم می کند و الگوریتم هایی که عملیات هایی مانند جستجو و مرتب سازی را انجام می دهند.
علاوه بر این، (چند) نقشهها ( آرایههای انجمنی ) و (چند) مجموعهها ارائه شدهاند که همگی رابطهای سازگار صادر میکنند. بنابراین، با استفاده از الگوها می توان الگوریتم های عمومی را نوشت که با هر ظرف یا هر دنباله ای که توسط تکرار کننده ها تعریف شده است کار می کند. همانطور که در C، ویژگی های کتابخانه با استفاده از #include دستورالعمل برای گنجاندن یک هدر استاندارد قابل دسترسی ++ ++ (ً ) ً ++ – “” ً (/). [83]
++ ++ ++
++ [84] ++، ++ «++ » ++++ [85] ()، [86] [87]
++ (++ ) [88] : ++
++ ً [89] ++ ++ ++ (). ++ (ً ) *( ) ++ ( //) ++ ++ (++ )، [90] ++، ++::(). [91] [92] [93] ++++، ++ /() “” {/*…*/}
: ++
++ [94] [95] [96] [97] [98] [99] [100]
++ C++ است، بنابراین از مزایای خوانایی سبک و اصطلاحات رایج اجتناب می شود. . همانطور که توسط جاشوا بلوخ بیان شده است :
من فکر میکنم C++ بسیار فراتر از آستانه پیچیدگیاش بود، و با این حال افراد زیادی هستند که آن را برنامهنویسی میکنند. اما کاری که شما انجام می دهید این است که مردم را مجبور می کنید آن را زیر مجموعه قرار دهند. بنابراین تقریباً هر فروشگاهی که من از ++C استفاده میکند، میگوید: «بله، ما از C++ استفاده میکنیم، اما از ارث بری چند پیادهسازی استفاده نمیکنیم و از » (++ )، “++” “”: [99] [100]
++ ++ “”.
فهرست مطالب