Alıntı (Salih Dinçer):
> Son günlerde şuradaki (http://ninova.itu.edu.tr/tr/dersler/elektrik-elektronik-fakultesi/21/blg-252e/ekkaynaklar?g397) dersleri takip etmeye başladım.
Oradaki notları inceledim ancak pek beğenmediğimi söylemeliyim :-(
ComplexT ComplexT::operator+(const ComplexT& z) const
{
double re_new, im_new;
im_new = re + z.re;
im_new = im + z.im;
return ComplexT(re_new, im_new);
}
Örneğin 'operator+=' işlecine de ihtiyacımız olacak.
Karmasik & operator+= (Karmasik const & diger)
{
reel_ += diger.reel_;
sanal_ += diger.sanal_;
return *this;
}
O zaman 'operator+''yı şu şekilde yazabiliriz:
Karmasik operator+ (Karmasik birinci, Karmasik const & ikinci)
{
return birinci += ikinci;
}
Referanslarla ilgili kısımda referans olarak 'int' döndürmüş. Ancak temel türlerde referans olarak belirlemek bir hız farkına neden olmaz.
Nesne yönelimli programlama bölümünde dinamik olarak oluşturduğu Nokta nesnelerini silmeyi anlatmış. Ama dinamik olarak bellek ayrıldığında programda bir hata oluşursa bellek sızıntısı oluşacaktır.
Ben olsam illa nokta kullanmak gerekiyorsa Stroustroup'un kitabındaki şu örneği kullanırdım.
#include <iostream>
#include <memory>
using std::cout;
using std::auto_ptr;
struct Nokta
{
double x, y;
};
struct Dikdortgen
{
double x, y, w, h;
};
// Hayali bir sınıf :o
class Arac
{
public:
virtual ~Arac ()
{}
virtual void fareTiklandiginda (const Nokta & nokta) = 0;
virtual Nokta noktaOgren () const = 0;
};
class Kalem : public Arac
{
Nokta nokta_;
bool fareBasiliMi_;
public:
Kalem ()
: fareBasiliMi_ (false)
{}
virtual void fareTiklandiginda (const Nokta & nokta)
{
nokta_ = nokta;
cout << "Bitis noktası (" << nokta_.x << ","<< nokta_.y << ") "
<< "olan bir cizgi ciziyorum!" << '\n';
fareBasiliMi_ = true;
}
Nokta noktaOgren () const { return nokta_; }
};
class Secim : public Arac
{
Nokta nokta_;
bool fareBasiliMi_;
Dikdortgen secim_;
public:
Secim ()
: fareBasiliMi_ (false)
{}
Secim (const Nokta & nokta)
: nokta_ (nokta)
{}
virtual void fareTiklandiginda (const Nokta & nokta)
{
secim_.x = nokta_.x;
secim_.y = nokta_.y;
secim_.w = nokta.x;
secim_.h = nokta.y;
cout << "Baslangic noktasi ("
<< secim_.x << "," << secim_.y << ") "
<< "bitis noktasi ("
<< secim_.w << "," << secim_.h << ") "
<< "olan bir dikdörtgen ciziyorum" << '\n';
nokta_ = nokta;
}
Nokta noktaOgren () const
{
return nokta_;
}
};
class Cizici
{
auto_ptr<Arac> arac_;
Nokta nokta_;
Cizici (Cizici const &);
Cizici & operator= (Cizici const &);
public:
Cizici ()
: arac_ (new Kalem)
{}
void fareTiklandiginda (const Nokta & nokta)
{
arac_->fareTiklandiginda (nokta);
}
void secimAraciniSec ()
{
nokta_ = arac_->noktaOgren ();
arac_.reset (new Secim (nokta_));
}
};
int main ()
{
Cizici cizici;
Nokta nokta = {3, 5};
cizici.fareTiklandiginda (nokta);
cizici.secimAraciniSec ();
nokta.x = 7;
nokta.y = 10;
cizici.fareTiklandiginda (nokta);
}
Kısacası C++ öğrenmen gerekiyorsa güzel bir C++ kitabı almanı tavsiye ederim.
http://amzn.com/020170353X
Eğer Amazon'dan almak istemiyorsan pandora gibi kitapevleri bu kitapları yurtdışından getirebiliyorlar.
Ben bile asıl amacım C öğrenmek olmamasına rağmen Ali beyin tavsiyesiyle ilk C kitabımı aldım.
http://amzn.com/0672326973
Çünkü bir noktada örneğin bir C kodunun D sürümünü yazmak gerekiyor. O zaman anlamadığım bir nokta olduğunda açıp bakabilirim.
Ayrıca ilk izlenimlerim gayet güzel. Hatta sadece bir başlangıç kitabı olmaktan çok, şimdiye kadar bilmediğim C'nin ileri düzey ayrıntılarını da anlattığını söyleyebilirim.
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]