error-prone implementation - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

error-prone implementation

+2 امتیاز

چرا این کد می تونه خطا بده منظورم اینه چرا مستعد خطاست؟

class Test {
// image attribute
cv::Mat ima;
public:
// constructor creating a gray-level image
Test() : ima(240,320,CV_8U,cv::Scalar(100)) {}
// method return a class attribute, not a good idea...
cv::Mat method() { return ima; }
};

 

 

سوال شده اردیبهشت 5, 1393  بوسیله ی مینو (امتیاز 29)   3 5

1 پاسخ

+3 امتیاز
 
بهترین پاسخ
اگه یه تابع method این کلاس رو call کند یک shallow copy به دست می آورد. اگر این کپی بعدا تغییر داده شود ویژگی کلاس هم تغییر خواهد کرد که می تواند رفتار بعدی کلاس را تحت تاثیر قرار دهد (و برعکس) برای اجتناب از این جور خطاها شما باید به جاش یک کپی از تصویر را برگردونید.
پاسخ داده شده اردیبهشت 5, 1393 بوسیله ی haniye sarbazi (امتیاز 983)   2 6 15
انتخاب شد اردیبهشت 11, 1393 بوسیله ی مینو
...