Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

c++ programcilarina bir dizi sorular


Öne çıkan mesajlar

Mesaj tarihi:
hmm, stl standard template library imis, ben standard library zannediyodum bayadir :)

bu arada wastiee, init. lerde copy cons calismaz diye birsey yok

mesela

yeni x;
yeni y = x;

init. inde copy cons calisiyor[signature][hline]templars of steel
Mesaj tarihi:
geçen mesajda dediğim gibi yeni x= yeni (15); tarzı initilization da eğer copy constructor private yapılırsa program derlenmiyor, eğer kullanılmıcak bişiyse neden el altında duruyor diye sora sora şöyle bi sonuca ulaştım (internette ve kitaplarda arıyorum ama tam bi bilgiye ulaşamıyorum, bilen eden varsa daha derinlemesine bi kaynak verirse güzel olur)

buyrun efem sonucumuz;
said:
#include
#include "conio.h"
using namespace std;


class initdeneme
{
public:
int sayi;

initdeneme(const int x):sayi(x)
{
std::cout << "constructor calisti: " << sayi << endl;
}

initdeneme operator +(const initdeneme& copyfrom)
{
initdeneme d(sayi+copyfrom.sayi);
return d;
}

initdeneme(const initdeneme ©from)
{
cout << "copy constructor calisti, bu sayidan kopyalandi:" << copyfrom.sayi < }
};


int main(int argc, char* argv[])
{
initdeneme deneme=initdeneme(1)+initdeneme(2);
getch();
return 0;
}


efenim burda copy constructor çalışıyor, çünkim overload ettiğimiz + operatörü temporary object yerine kanlı canlı gerçek object döndürüyor.

eğer ki operator+(...) fonksiyonu aşağıdaki gibi olsaydı,
said:

initdeneme operator +(const initdeneme& copyfrom)
{

return initdeneme (sayi+copyfrom.sayi);
}

copy costructor çalışmayacaktı. temporary objects'den initialization yaptığında copy constructor çalışmıyor, direkt x yerine temp. objecti kullanmaya başlıosun.[signature][hline]h u m a n i t y - i s - t h e - o n l y - s u p e r p o w e r !
Mesaj tarihi:
kardeş bir tanresi çalışmıyor demedim ki :-)
birinde copy constructor çalışmıyor.

aha evet valla hatalı olmuş, denerken içine etmişim copy constructor'ın başında;

sayi=copyfrom.sayi;
olacak.

[signature][hline]h u m a n i t y - i s - t h e - o n l y - s u p e r p o w e r !

[Bu mesaj Rahan tarafından 06 Ekim 2004 23:19 tarihinde değiştirilmiştir]
Mesaj tarihi:
ikisinde de copy constructor calısır diorum ben iste :)

= in sagına sen integer yerine initdeneme objesi koyarsan copy constructorı arar, bulursa da devam eder. bulamazsa direk önceden yaratılan objeyi kullanır..
Mesaj tarihi:
said:
wanderer1985, 06 Ekim 2004 21:35 tarihinde demiş ki:
hmm, stl standard template library imis, ben standard library zannediyodum bayadir :)

bu arada wastiee, init. lerde copy cons calismaz diye birsey yok

mesela

yeni x;
yeni y = x;

init. inde copy cons calisiyor
ehe zaten kesin calismaz demedim ki, bu durumda tabi ki calisir

gerek yoksa ama calismaz, c++ 'in en onemli ozelligi, templateleri, templateleri kullanarak yaptiginiz herseyin run-timeda degil, compile-time 'da olusturulmasi, inline fonksiyonlar vs.. yani, compile-time 'da optimizasyon var hayvan gibi :)[signature][hline]wastiee | PHPNotepad
×
×
  • Yeni Oluştur...