PDA

View Full Version : سربارگزاری عملگر =



Sepidar
شنبه 25 اسفند 1386, 18:32 عصر
سلام
تا اونجایی که یادمه اپراتور مساوی (=) در سی پی پی از یک کلاس به کلاسهای فرزند به ارث نمی‌رسید. با این حال من یک کلاس از کلاس map به ارث برده ام و این اپراتور بدون تعریف مجدد به درستی عمل می کند. کسی علت این امر را می داند؟

emad_67
یک شنبه 26 اسفند 1386, 00:41 صبح
در صورتی که 2 شی از یک کلاس داری و اونا رو با = مساوی هم قرار دادی طبیعی هست. چون عملگر = برای 2 شی از یک کلاس overload شده هست و از کپی عضو به عضو استفاده می کنه.

Sepidar
شنبه 03 فروردین 1387, 21:46 عصر
مخالفم. چون کپی عضو به عضو اونجا -به علت حضور اشاره گرها- نباید درست کار کنه. مثلا اگر شیئ a با شیئ b مساوی قرار داده شده، با این چیزی که شما میگی، با دستکاری شیء a باید شیء b هم عوض شه که اینطور نیست.

emad_67
شنبه 10 فروردین 1387, 20:51 عصر
مثلا اگر شیئ a با شیئ b مساوی قرار داده شده، با این چیزی که شما میگی، با دستکاری شیء a باید شیء b هم عوض شه که اینطور نیست.
من همین کاری که شما گفتی رو انجام دادم وبا تغییر محتوای شیb محتوای شی a هم تغییر میکنه.
این مثال رو ببینید:


#include<iostream.h>
class name
{
public:
name()
{
str=new char[20];
}
char *str;
};

void main()
{
name a,b;
cin>>a.str>>b.str;
cout<<"a = "<<a.str<<endl
<<"b = "<<b.str<<endl;

a=b;

cin>>b.str;

cout<<"a = "<<a.str<<endl
<<"b = "<<b.str<<endl;

}

در اینجا وقتی دو شی a وb رو مساوی قرار میدیم، اشاره گر شی a نیز به اشارهگر شی b اشاره میکنه.

Sepidar
دوشنبه 12 فروردین 1387, 14:12 عصر
اگه به پست اول دقت می کردید نوشته بودم که مشکل من در ارتباط با کلاس map از stl هستش.