C++ sınıfı oluşturucuları

C Class Constructors



Yapıcılar işlevler gibidir. Bunlar, sınıfın değerlerini ve nesnelerini başlatmak için kullanılır. Bu yapıcılar, bir sınıfın nesnesi oluşturulduğunda başlatılır. Yapıcı doğrudan herhangi bir değer döndürmez. Yapıcının değerini elde etmek için yapıcının herhangi bir dönüş tipi olmadığından ayrı bir fonksiyon tanımlamamız gerekir. Yapıcı, basit işlevden farklı şekillerde farklıdır. Nesne oluşturulduğunda bir yapıcı oluşturulur. Sınıfın genel bölümünde tanımlanır.

Bu yazıda, tüm bu tür kurucuları örneklerle ele alacağız.







örnek 1

Bu, varsayılan bir kurucunun bir örneğidir. Bildiğimiz gibi, bir sınıfın nesnesini oluşturduğumuzda, yapıcılar varsayılan olarak otomatik olarak oluşturulur. Buna örtük yaratma denir. Yapıcılar, sınıfın adıyla aynı ada sahiptir. Sınıfın özel ve genel olmak üzere iki seçeneği olduğunu bildiğimiz için yapıcının c++ kodunu içeren bir dosya düşünün. Özel kısım veri değişkenlerini içerirken, genel kısım herhangi bir nesne tarafından alınan fonksiyonlar içindir. Yani yapıcı da genel kısımda tanımlanır.



tamsayı()

{

x=elli;

ve=yirmi;

};

Bu kurucuda, değişkenlere değerler atanır. Değerleri çıktı olarak almak istiyorsak, bunları ana programda yazdırmamız gerekir.







Yapıcı tanımlandıktan sonra sınıf kapatılır. Ana programa girerken bir nesne kullanarak değerlerin çıktısını alacağız. Nesne her zaman yapıcılara erişir, çünkü bunlar sınıfın parçalarıdır. Nesne oluşturma çok basittir. Sınıf ismi ile tanıtılarak yapılır. Bu, bu örnekte bir tamsayıdır. Değer, nokta yöntemiyle alınacaktır. yani, a.x.

Kaynak kodun çıktısını Ubuntu'daki terminalden görebiliriz. Çıktıyı almak için kullanılan yaklaşım oldukça kolaydır. İlk olarak kod derlenir ve ardından çalıştırılır. Derleme işlemi için G++ derleyicisini kullanıyoruz. Tıpkı C durumunda olduğu gibi, GCC kullanıyoruz.



$G++ -veya filec filec.C

./dosya

-O çıktıyı dosyaya kaydetmek için kullanılır.

Örnek 2

Bu çizimde, parametreli yapıcıları açıklayacağız. Önceki örnekten farklı olarak, argümanları ana programdan yapıcılara da iletebiliriz. Nesne oluşturulduğunda, bu değerler değeri almak için yapıcıda bulunan değişkenlere otomatik olarak iletilir. Parametreli yapıcıların kullanımlarından bazıları şunlardır.

  • Başlatıldığında, yapıcılar içinde farklı değerlere sahip farklı değişkenleri başlatmak için kullanılır.
  • Yapıcı aşırı yüklemesinde kullanılır. Yazının devamında tanımlanmıştır.

Şimdi bu kavramı detaylandırmak için tarif ettiğimiz illüstrasyonu ele alalım. Sınıfın tamsayı adı vardır, bu nedenle kesinlikle yapıcının adı da aynı olacaktır. Yapıcının parametrelerinde iki tamsayı tipi değer vardır. Bunlar, ana programdan bir fonksiyon çağrısı olarak gönderilen değerleri kabul etmek için başlatılır.

tamsayı( intx,intve)

{

İLE=x;

B=ve;

};

Önceki örnekte, yapıcı içindeki değişkenlere değerler verildi. Bu yapıcıda ise, değişkenlere değere sahip değişkenler atanır.

Eğer ekran almak istiyorsak, bu başlatılmış değişkene doğrudan kurucudan erişmek mümkün olmadığı için değeri döndürecek bir fonksiyon tanımlamamız gerekiyor.

intgetX()

{

dönüşile;

};

Şimdi programın ana bölümünü göreceğiz. Burada nesne oluşturulduğunda parametre bölümünde değerleri görebilirsiniz.

tamsayı v(70,55); {örtük}

tamsayı v=tam sayı(10,on beş); {açık}

Ve sonucu görüntülemek için, nesneyi kullanarak sınıf içinde oluşturulan fonksiyonları çağıracağız. yani v.getx().

Kayıt alma yöntemi, daha önce tanıtılanla aynıdır.

Örnek 3

Bu örnek, bir sınıfın yapıcısının kopyalanmasıyla ilgilidir. Nesneyi ait olduğu benzer bir sınıfın başka bir nesnesiyle başlatmak için kopyalanan bir kurucu kullanılır. Bu yapıcı, bir nesnede bulunan verileri diğerine kopyalar. Bu yapıcının parametreleri, sınıfın bir nesnesinin adresini içerir. Sınıf içindeki herhangi bir fonksiyonla erişebilmeleri için aynı veri tiplerinden iki değişkeni tanıttığımız verilen örnekleri düşünün. Yapıcı, değerleri değişken aracılığıyla alacaktır. Aynı zamanda, kopyalanan kurucu sadece nesneyi alacaktır. Ve bu nesnenin yardımıyla değerler alınacaktır.

duvar(duvar&nesne)

{

Uzunluk=nesneuzunluk;

Boy uzunluğu=nesneboy uzunluğu;

}

Alanı hesaplamamız gerekiyor, bu nedenle bu hesaplamanın işlevi burada tanımlanmıştır. Bu, çağrıldığında değeri ana işleve döndürür. Şimdi kodun ana programını gözlemleyeceğiz

Kopyalanan yapıcının işlev çağrısı şu şekilde olacaktır.

duvar duvar2=duvar1;

Nesne, kopyalanan yapıcıyı çağırır ve ilk nesne aracılığıyla veriler onun aracılığıyla kopyalanır. Ayrıca, her iki nesne aracılığıyla alanı hesaplamak için işlevi çağıracağız.

Çıktıdan, her iki kurucunun sonucunun aynı olduğunu görebilirsiniz. Bu, tüm verilerin nesne tarafından başarıyla kopyalandığı anlamına gelir.

Örnek 4

Bu, yapıcı aşırı yüklemesinin bir örneğidir. Sınıf içinde birden fazla işlev kullanmamız gerektiğinde olur. Yapıcı aşırı yüklemesi, parametreli yapıcıların talimatlarını takip eder. Sınıftaki tüm kurucular, sınıfla benzer bir ada sahiptir. Ancak yapıcıların her birine farklı parametreler atanır. Nesneyi oluşturduğumuzda her kurucu argümana göre çağrılır.

Üç kurucu kullandığımız verilen bir örneği düşünün. Biri herhangi bir argüman olmadan. İkincisi tek bir argümanla, üçüncüsü iki argümanla. Bu çizim öncekine benzer. Sınıf içinde açıklanan ayrı fonksiyonda alanı hesaplarken.

// İki argümanlı kurucu

şekil(intx,intve)

{

ile=x;

B=ve;

};

Şimdi, ana programa doğru ilerlerken, sınıf nesnesini başlattığımızda, varsayılan olarak hiçbir argümanı olmayan yapıcının çağrıldığını görebiliriz. Şimdi, farklı argümanlara sahip farklı nesnelere sahip diğer yapıcıları çağırmamız gerekiyor.

şekil s;

şekil s2(8);

şekil s3(4,2);

Değeri görüntüleyebileceğimiz fonksiyon, oluşturulan aynı nesne aracılığıyla çağrılır.

Çıktıyı görüntülemek için, dosyada bulunan kodu derleyip çalıştırarak aynı komut terminal yöntemini kullanacağız.

Çıktıdan, cevabın her kurucu için aynı olduğunu görebiliriz.

Çözüm

Bu öğreticide, yapılandırıcıların temellerini ve bunların nasıl aşırı yükleneceği de dahil olmak üzere işlevlerini gördük. Yapıcılar, değişkenleri değerlerle başlatmak için kullanılır.