C++ This

Bu yazımda sizlere c++’ta this ‘i olabildiğince basit ve anlaşılır şekilde anlatacağım. Bir sınıftan birçok nesne oluşturabiliriz, ve oluşturduğumuz nesnelerin herbirinin kullanmak istediği değişkenlere ayrı birer adres verilir. Örnek olarak, diyelim ki elimizde Math sınıfı var.  Değişkenleri de m_x ve m_y olsun. Hemen bir parametreli constructor yazalım işi zorlaştırmayalım;

Math::Math(int x, int y)
:m_x(x), m_y(y)
{
//Constructor.
}

Aldığım parametreleri direkt değişkenlerime atıyorum.  Daha da uzatmadan neler olacak görmek için iki tane nesne tanımlayalım.

Math math(3,5);
Math math2(2,9);

Bu sınıfa print fonksiyonu yazıp değerleri yazdırdığınızda iki nesne içinde farklı değerler çıkacak.(math için 3 ve 5. math2 için 2 ve 9). Burada göstermek istediğim şey her nesne için aynı değişken adresi kullanılsaydı kullandığımız fonksiyonların durumuna göre işler karışacaktı. Bu yüzden aslında biz görmesekte bir şekilde nesnenin adresi parametreymiş gibi çağırdığımız fonksiyonlara aktarılır. Böylece her nesne için aslında farklı değişkenler oluşturulmuş olur.

c++ thisc++ this

Sınıfın herhangi bir fonksiyonunun içine this-> yazdığımızda o sınıftaki tüm değişken ve fonksiyonlara ulaşabildiğimizi görebilirsiniz.

c++ thisSon olarak this kullanarakta aynı değişkenlere ulaştığımızı gösteren bir örnek yapmak istiyorum. Print() fonksiyonumuz şu şekilde olsun;

void Math::Print()
{
cout << "(m_x, m_y) = " << m_x << ", " << m_y << endl;
cout << "(this->m_x, this->m_y) = " << this->m_x << ", " << this->m_y << endl;
}

Mainde de iki tane nesne tanımlayıp onları yazdıralım;

Math math(3,5);
math.Print();

Math math2(2,9);
math2.Print();

Ekran çıktımızda this kullanarakta aynı değişkenlere ulaşabildiğimizi göreceksiniz.

C++ this

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s