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


wanderer

Öne çıkan mesajlar

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 !
Link to comment
Sosyal ağlarda paylaş

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]
Link to comment
Sosyal ağlarda paylaş

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
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...