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

اجازه دادن به عملگر مساوی فقط برای مقادیر موقت

+1 امتیاز

من داخل کلاسی که دارم یک Handle فایل وجود داره  حالا نمی خوام اگر از مساوی استفاده بشه این هندل داخل هر 2 تا کلاس کپی بشه .

آیا این امکان وجود داره که از مساوی گذاشتن 2 کلاس جلوگیری کرد و فقط برای مقادیر موقت این امکان فعال باشه ؟ 

مثلا :

class A{}

A a;
A b;

a=b;//error
a=A();//ok 
b=a;//error
b=A()//ok

 

سوال شده شهریور 1, 1393  بوسیله ی علیرضا حقجو (امتیاز 32)   1 3 5
دوباره تگ گذاری شد مهر 9, 1393 بوسیله ی BlueBlade

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

2 کار باید انجام بدید 

1_  operator= که برای const&هست رو delete کنید

2_ operator= که rvalue میگیره رو بنویسید :

#include<iostream>
class A{
public:
    void operator=(const A&)=delete;
    A& operator=(A&& other)
    {
        this->data=other.data;
        other.data=nullptr;
        return *this;
    }
    //constructor , copy constructor va....
private:
    int* data;//baraye sadegi int* gerefram
};
int main ()
{
    A a;
    A b;
    //a=b; error
    a=A();//ok
}

 

پاسخ داده شده شهریور 1, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد شهریور 5, 1393 بوسیله ی Ali Rahbar
...