قواعد مع الأشياء وسائط مؤقتة بالرجوع
سؤال
ويقول لدي فئة:
class A
{
public:
A() {}
};
وظيفة:
void x(const A & s) {}
ووأفعل:
x(A());
ويمكن للشخص الرجاء شرح لي القواعد المتعلقة بتمرير الكائنات المؤقتة بالرجوع؟ من حيث ما يسمح للمترجم، حيث كنت في حاجة CONST، إذا حصلت على نسخة ضمنية، وما إلى ذلك من اللعب حولها، فإنه يبدو وكأنه كنت في حاجة إلى CONST الأمر الذي يجعل الشعور، ولكن هناك قاعدة رسمية بشأن كل هذا؟
وشكرا!
المحلول
وهناك قاعدة رسمية - الرسمي C ++ (قسم 13.3.3.1.4 إذا كنت مهتما) تنص على أنه مؤقت يمكن أن تكون ملزمة فقط للإشارة CONST - إذا حاولت استخدام مرجع غير CONST يجب على المترجم علم هذا أنه خطأ.
نصائح أخرى
وعشب سوتر يقوم بعمل جيد شرح هنا: http://www.gotw.ca /gotw/081.htm
س () يجب إما أن تتخذ مرجعا CONST إلى A مؤقت، أو الأشعة () يجب أن يأخذ وكل قيمة.
لا تنتمي إلى StackOverflow