hi.alir
پنج شنبه 14 دی 1391, 22:42 عصر
کد زیر
const bool a = false;
cout << a;
بعد از کامپایل به کد زیر تبدیل میشه
cout << false;
مشکل اینجاست که وقتی از const_cast استفاده می کنیم بازم این اتفاق میفته. البته می دونم const_cast برای اینجور مواقع نیست ولی چی کار باید بکنم تا درست کار کنه؟
مثلا کد زیر آخر false چاپ میکنه به جای true
const bool a = false;
bool & ra = const_cast<bool&>(a);
ra = true;
cout << a;
وقتی تو asm تولید شده نگاه کردم، اصلا a رو push نمی داد به cout و 0 رو push میداد.
const bool a = false;
cout << a;
بعد از کامپایل به کد زیر تبدیل میشه
cout << false;
مشکل اینجاست که وقتی از const_cast استفاده می کنیم بازم این اتفاق میفته. البته می دونم const_cast برای اینجور مواقع نیست ولی چی کار باید بکنم تا درست کار کنه؟
مثلا کد زیر آخر false چاپ میکنه به جای true
const bool a = false;
bool & ra = const_cast<bool&>(a);
ra = true;
cout << a;
وقتی تو asm تولید شده نگاه کردم، اصلا a رو push نمی داد به cout و 0 رو push میداد.