تبلیغات


آموزش استفاده از کلمه کلیدی auto در سی پلاس پلاس

آموزش استفاده از کلمه کلیدی auto در سی پلاس پلاس

اشتراک گذاری
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestPrint this pageEmail this to someone

در این مطلب از وب سایت اوپن مایند، کلمه کلیدی auto در سی پلاس پلاس ۱۱ و همچنین در سی پلاس پلاس ۱۴ را بررسی می کنیم. با ما همراه شوید.

کلمه کلیدی auto قبل از سی پلاس پلاس ۱۱

قبل از سی پلاس پلاس ۱۱، کلمه کلیدی auto احتمالاً کمترین استفاده را در میان همه کلمات کلیدی داشت!

شما در مورد متغیرهای محلی از قبل می دانید که عمر آن ها به طور خودکار مشخص می شود؛ در واقع، در لحظه ورود کنترل اجرا به بلوک آن ها، در حافظه ایجاد می شوند و هنگام خروج هم از بین می روند.

قبل از سی پلاس پلاس ۱۱، با استفاده از کلمه auto به صراحت بیان می شد که عمر متغیرها و مقادیرشان در حافظه باید به طور خودکار تعیین شود. مثال زیر را در نظر بگیرید:

کمی عجیب به نظر می رسد؟ حق دارید! به همین دلیل هم این نوع استفاده از auto بعد از سی پلاس پلاس ۱۱، منسوخ شده است!

auto در سی پلاس پلاس ۱۱ : استفاده به عنوان نوع داده استنتاجی

در سی پلاس پلاس ۱۱، عملکرد کلمه کلیدی auto تغییر کرده است و حالا استفاده به خصوصی دارد که در ادامه با آن آشنا می شویم.

قطعه کد زیر را در نظر بگیرید:

حالا بیایید به یک سوال فکر کنیم. اگر کامپایلر سی پلاس پلاس طی مراحل انجام کامپایل، می داند که ۵.۰ یک مقدار اعشاری double است پس چرا باید برای تعریف متغیر d به طور صریح و واضح بیان کنیم که متغیر باید double باشد؟
بهتر نبود که بتوانیم به یک متغیر بگوییم نوع خود را بر اساس مقداردهی اولیه (Initializing)، در نظر بگیرد؟!

با آغاز انتشار و استفاده از سی پلاس پلاس ۱۱، کلمه کلیدی auto همان عملکرد مذکور در پرسش های بالا را برعهده می گیرد. هنگامی که به یک متغیر مقدار اولیه می دهید، کلمه auto در جایگاه نوع داده به کامپایلر می گوید که نوع این متغیر را بر اساس نوع مقدار اولیه مشخص کند؛ به این امر استنتاج (استنباط) نوع داده گفته می شود. برای مثال:

حتی می توان برای تعریف متغیر نگه داری کننده خروجی توابع هم از auto استفاده کرد. در مثال زیر، نوع متغیر sum از نوع مقدار صحیح (int) تعیین خواهد شد (چون نوع خروجی تابع add، مقدار صحیح ( int) است).

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

خوانایی بیشتر کدها هنگام استفاده از auto

اگرچه استفاده از کلمه auto به جای انواع داده ابتدایی و یا کوتاه (از لحاظ اسمی)، تاثیر خاصی در حجم و روان بودن کد ندارد، اما در جاهایی که به جای انواع داده انتزاعی پیچیده و بلند می نشیند، به طور محسوسی کد شما مرتب تر و خواناتر می شود. با قطعه کد زیر منظور خود را واضح تر بیان می کنیم:

 

کلمه auto نمی تواند با پارامترهای ورودی تابع استفاده شود!

یک خطای رایج در میان برنامه نویس های تازه کار که با کلمه auto آشنا می شوند، استفاده از آن در پارامترهای تابع است. مثال زیر را ببینید:

این قطعه کد کار نمی کند؛ چرا که کامپایلر راهی برای استنتاج نوع داده پارامترهای x  و y در زمان کامپایل ندارد.

اگر به دنبال راهی هستید که تابعی تعریف کنید که با تعداد مختلفی از انواع داده کار کند، شما باید از قالب های تابع (function templates) استفاده کنید نه از نوع داده استنتاجی ( auto). این محدودیت برای auto شاید در نسخه های بعدی سی پلاس پلاس برطرف شود اما فعلاً تا نسخه ۱۴ آن، استفاده در پارامترهای تابع امکان پذیر نیست.

auto در سی پلاس پلاس ۱۴ : نوع داده استنتاجی برای توابع

در سی پلاس پلاس ۱۴، کاربرد کلمه auto کمی گسترش یافت تا بتواند نوع مقدار خروجی تابع را هم از طریق کدهای بدنه آن، استنتاج کند. مثال زیر را در نظر بگیرید:

در این کد، به این دلیل که متغیرهای x  و y از نوع int هستند و همچنین ارزیابی نوع مقدار حاصل جمع آن ها، به نوع int، کامپایلر مقدار خروجی تابع add را مقداری صحیح در نظر می گیرد.

 

در پایان، ما در اوپن مایند از پیشنهاد و یا سوالاتی که شما خوانندگان عزیز درباره مطالب مطرح می کنید، استقبال می کنیم.
پس قبل از ترک این صفحه، برای ما درباره این مطلب نظر بگذارید و ما را خوشحال کنید! 🙂


تبلیغات:

نظر خود را بنویسید.

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *