Re: [Linux-programlama] c++ () operatör aşırı yüklemesi

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Caner KURTULMAMIS (ckurtulmamis@gmail.com)
Date: Thu 15 Dec 2005 - 07:21:19 EET


  Bu aşırı yükleme neredeyse her zaman referans döndürür, temp nesneyi
ne zaman döndürür pek emin değilim...
  Ancak böyle kodlamanın ne kadar sağlıklı olduğundan emin değilim, zor
anlaşılır kodlara neden olabilir. Ama yine de bu örnek birazda
derleyiciye davranabilir, aşağıdaki sonucu hangi derleyici de aldınız?
GNU C mi?
  Ben illa kullanıcağım diyorsanız, size tavsiyem, sonradan ++
operatöründe uygulandığı gibi bir "hacking" uygulamanız. örnek:

class m
{
public:
int i;
int & operator () (int a){cout<<"Referansla"<<endl; return i;}
int operator () (int a, int/*hacking*/) const {cout<<"Değerle"<<endl; return i;}
};

m mm;
mm.i=2;
mm(2)/*REF*/=mm(3, 0)/*TEMP*/;
cout<<mm(4, 0)/*TEMP*/;

  ayrıca referans yerine pointer kullanmakta bir çözüm...

Cem Ahmet MERCAN (HBM) wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Merhaba ;
>
> Birkaç yerde (ki bunların en az biri kitaptı, bir diğeri bir kütüphane):
>

  Hangi kütüphane sorabilir miyim? STL'de böyle bir örneğin olmadığından
neredeyse eminim. Boost olabilir mi?

> class m
> {
> public:
> int i;
> int & operator () (int a){cout<<"Referansla"<<endl; return i;}
> int operator () (int a) const {cout<<"Değerle"<<endl; return i;}
> };
>
> şeklinde () operatörünün aşırı yüklendiği örnekler gördüm. Ancak
> yukarıdaki örnek kullanıldığında:
>
> m mm;
> mm.i=2;
> mm(2)=mm(3);
> cout<<mm(4);
>
> çıktısı:
> Referansla
> Referansla
> Referansla
>
> şeklinde oluyor. Bir şeyleri mi gözden kaçırıyorum?
>
> NOT: Tabi ki yukarıdaki program bu liste için aşırı basitleştirdiğim
> hali, dolayısı ile birşey yapmıyor.
>
> - --
> Saygılarımla, İyi Günler...
>
> Cem Ahmet MERCAN
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2 (MingW32)
>
> iD8DBQFDoCLX938hjj8zEIMRAp1gAJkBrS+q/mWpFUcX795MgKCk/dxErwCgnhjV
> TFik8otn8HkhzUG1aq09EMY=
> =fUcb
> -----END PGP SIGNATURE-----
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.