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

جلوگیری از کپی شدن کلاس

+1 امتیاز
سلام.

اگر نیاز داشته باشیم که نشه از یک کلاس کپی کرد راهی وجود داره؟یعنی زمانیکه که کلاس مد نظر کپی شه خطای زمان کامپایل بده کامپایلر
سوال شده مهر 18, 1393  بوسیله ی Xavi (امتیاز 627)   24 83 110

2 پاسخ

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

در c++11 باید copy constructor  و operator= رو delete کنید به این شکل :

#include <iostream>   
      
class A
{
public:
	A(){}
	A(const A& other) = delete;//copy constructor
	void operator=(const A& other) = delete;//operator =
};
int main() {
	A a;
	A b;
	A c = b;//error copy constructor is deleted
	a = b;//error operator= is deleted
}

در c++98 هم کافیه که این 2 تا Constructor رو داخل قسمت private کلاس بزارید

پاسخ داده شده مهر 20, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد دی 3, 1393 بوسیله ی Xavi
0 امتیاز

سلام. اگه به آخر اسم کلاس کلمه final رو اضافه کنی دیگه از روی اون کلاس نمیشه کپی کرد. این خاصیت زیاد جالب نیست چون ویژگی ارث بری توی c++ v رو میبری زیر سوال

class Test final
{
	
};

 

پاسخ داده شده مهر 18, 1393 بوسیله ی Pashmak (امتیاز 644)   8 15 31
ُسلام با final نمیشه  از کلاس ارث برد .
ربطی به کپی نشدن نداره .
...