Mohammad Rahbari Doust 1 ارسال شده در دی 97 سلام، در مورد اینکه cv-qualification چی هست سوال داشتم ممنون میشم توضیح بدید. نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
0 کامبیز اسدزاده 618 ارسال شده در دی 97 در 5 ساعت قبل، Mohammad Rahbari Doust گفته است : سلام، در مورد اینکه cv-qualification چی هست سوال داشتم ممنون میشم توضیح بدید. در استاندارد سیپلاسپلاس وقتی نیاز است تا نوعی را برای متغیر خود انتخاب و توصیف کنید به طور معمول آن را به صورتهای نوعِ اساسی و پایه مانند عدد صحیح، رشته، آرایه و غیره و یا یک نوع ویژهٔ واجد شرایط جهتِ استثناء شدن توصیف میکنیم. این انواع به دو صورت no cv-qualifier و cv-qualifier از هم متفاوت توصیف میشوند. کلمات CV خلاصه شدهٔ const و volatile است، زمانی که شما نوعی از متغیر را تحت کلمات کلیدی const و volatile توصیف میکنید در واقع نوع آن را تحت عنوان const-qualified و volatile-qualified توصیف کردهاید که از تعریف عادی متمایز میشوند و با این کار متغیر را واجد شرایط خاصی قرار میدهید. برای مثال، نوع زیر در قالب استاندارد cv-qualifier تعریف شده است که به صورت ضروری مقدار اولیهٔ آن نیز مشخص شده است: const int ci = 3; در صورتی که کدی همانند نمونهٔ زیر داشته باشیم: const int ci = 3; ci = 4; از طرف کامپایلر با خطایی مشابه خطای زیر مواجه خواهیم شد: error: cannot assign to variable 'ci' with const-qualified type 'const int' منظور از این خطا این است که، مقدار جدیدی را شما نمیتوانید به متغیری از نوع const که تحتِ شرایطِ const-qualified میباشد بدهید. از طرفی اگر نوع متغیر خود را با volatile توصیف کنید، مقدار متغیر در هر نَخ (Thread) دیگر احتمال تغییر یافتن را خواهد داشت. volatile int ci = 3; ci = 4; در واقع شما آن متغیر را واجد شرایط ویژهای قرار دادهاید که بتواند در هرجا که نیاز بود تغییر پیدا کند. (در این حالت بر خلاف نوع const کامپایلر خطایی را از خود ساطع نمیکند و علاوه بر آن در زمان بهینهسازی از آن مورد صرف نظر خواهد کرد). استفاده از کلمهٔ کلیدی volatile بهینهسازی کامپایلر را از بهینهسازی آن دور میکند.توجه داشته باشید که یک کلمهٔ کلیدی ویژه نیز وجود دارد به نام mutable که از آن زمانی استفاده میشود که اعضای کلاس و نوع توابع شما به صورت const یعنی از نوع const-qualified توصیف شده باشد که تغییر آن امکانپذیر نیست. در صورتی که لازم باشد استثناء یا واجد شرایط قرار بگیرد نوع آن توسط mutable میتواند توصیف شود که اجازهٔ تغییر فقط به آن مورد داده خواهد شد. mutable int i; در نهایت متغیر زیر به صورت no cv-qualitifier تعریف شده است که در حالت معمول بر اساس قوانین و شرایطی که کامپایلر در نظر میگیرد با آن برخورد و در صورت نیاز بهینهسازی خواهد شد. int i = 2; 1 نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
0 Mohammad Rahbari Doust 1 ارسال شده در بهمن 97 ساده و زیبا بود . تشکر نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
سلام، در مورد اینکه cv-qualification چی هست سوال داشتم ممنون میشم توضیح بدید.
به اشتراک گذاری این ارسال
لینک به ارسال
به اشتراک گذاری در سایت های دیگر