چرا decltype موقع استفاده با پرانتز این شکلی میشه ؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چرا decltype موقع استفاده با پرانتز این شکلی میشه ؟

+1 امتیاز

سلام خسته نباشید .

من توی کتاب c++ primer این قسمت رو دیدم نمی فهمم چرا این جوری میشه ؟

    struct A { double x; };
    const A* a = new A();
    decltype(a->x) x3;          // type  : double
    decltype((a->x)) x4 = x3;   // type  : const double&

چرا وقتی که از پرانتز استفاده مشه type فرق می کنه ؟

سوال شده بهمن 26, 1392  بوسیله ی سعید (امتیاز 92)   5 16 22

1 پاسخ

+2 امتیاز
 
بهترین پاسخ
این بخاطر اینه که تو خط ۳ ( بدون پرانتز) تنها خود x درنظر گرفته میشه . یعنی چیزی که شما بهش اشاره میکنید .

ولی تو خط ۴ (دارای پرانتز) شما چیزی که بهش اشاره میکنید رو درون پرانتز گذاشتید . یعنی کل عبارت داخل پرانتز در نتیجه بدست اومده تاثیر میزاره . برای همین صفت های دیگه هم به متغییر شما اضافه میشه . (همونطوری که توی کامنت نوشته شده )

این یکی از ویژگی های decltype هستش.
پاسخ داده شده اسفند 9, 1392 بوسیله ی Ali Rahbar (امتیاز 4,240)   6 16 46
انتخاب شد اسفند 16, 1392 بوسیله ی مصطفی ساتکی
...