Dynamic_Cast C++

Dynamic Cast C



Bu yazıda C++ programlama dilindeki dinamik döküm ele alınacaktır. Başlamak için, döküm kavramını ve birçok döküm türünü anlamalıyız. Bir değişkenin veri türünü değiştirme işlemi döküm olarak bilinir. Casting, C++ programlama dilinde iki kategoriye ayrılır: Örtük atama ve açık atama.

C++'da veri tipi dönüştürme:

Tip dökümü, veri tipini başka bir veri tipine değiştirme prosedürüdür. C++ programlama dilinde iki tür atama veya tür dönüştürme vardır: örtük ve açık atama. Otomatik tür dönüştürme, örtük tip belirleme için başka bir addır. Gerçek zamanlı derleme sırasında derleyici tarafından gerçekleştirilir ve herhangi bir kullanıcı girişi veya eylemi gerektirmez. Bir ifadede iki tür veri türü olduğunda, bu dönüştürme biçimi gerçekleşir. Örneğin:

  Grafik kullanıcı arabirimi, metin, uygulama Açıklama otomatik olarak oluşturulur







Verilen kodda son satır ifadesine bir tamsayı değişkeni ve bir karakter değişkeni eklendiğini ve “i” tamsayı değişkeninin değerinin değiştiğini görüyoruz. Bu ifadede “a”nın ASCII sayı karşılığı karakter değerine dönüştürülerek “i” değişkeninin tamsayı değerine eklenecektir. “i” değişkeninin değeri yazdırılırsa, sonuç bu iki değerin toplamı olacaktır. Derleyici, karakter değişkeninin veri türünü sağdaki alfabenin ASCII standart değerine dönüştürerek otomatik olarak bir tamsayı veri türüne dönüştürür; bu, çalışma zamanında örtük veya otomatik tür dönüştürmenin harika bir örneğidir.



Şimdi, açık tip atama veya tip dönüştürme söz konusu olduğunda, bu otomatik bir süreç değildir; kullanıcı, bir değişkenin veri türünü koddaki başka bir değişken türüne manuel olarak dönüştürmelidir. Veri türleri genellikle bellek alanlarına ve tutabilecekleri bilgi miktarına göre bir hiyerarşide düzenlenir. Bu nedenle, herhangi bir bilgiyi depolamak için daha düşük dereceli bir veri türü kullanıldığında, ancak bilgi kaybının en aza indirilmesi ve giderek daha fazla bilginin depolanabilmesi için daha yüksek dereceli bir veri türüne dönüştürülmesi gerektiğinde, açık tip atama veya tip dönüştürme genellikle yaygın olarak kullanılır. tamamlamak. Örneğin, bir tamsayı tipi değişken ondalık noktadan sonraki değerleri saklayamadığı için, tamsayı değişkenleri kullanmaya devam edersek bazı bilgileri kaybedebiliriz. Bu kaybı önlemek için, tamsayı değişkenini bir kayan değişkene dönüştürerek, ondalık noktalardan sonra değerleri kaydederek bilgi kaybını önleriz. C++ programlama dilinde açık tür dönüştürme, iki yoldan biriyle gerçekleştirilebilir: atama yoluyla veya atama işlecini kullanarak. Atama dönüştürmesi bir kod ifadesinde yapılır ve bu ifadenin sözdizimi aşağıda verilmiştir.



# “(veri türü) ifadesi”

Yukarıdaki kodda parantez içine geçerli bir veri tipi koymalı ve parantezden sonra parantez içinde yazan veri tipine değiştirmek istediğimiz değişkeni veya ifadeyi yazmalıyız.





Şimdi C++ programlama dilinde atama işleçleri tarafından yapılan dönüştürme türüne bakacağız. Atama işleçlerine, bir değişkeni veri türünü mevcut olandan diğerine değiştirmeye zorlayan tekli işleçler de denir. Dört tip döküm döküm operatörü vardır: Statik döküm, Dinamik döküm, Sabit döküm ve Yeniden yorumlama dökümü.

C++'da dinamik döküm:

C++ programlama dilinde dinamik döküm, RTTI (Çalışma Zamanı Türü Tanımlaması) adı verilen bir konsepte dayalıdır. RTTI, C/C++, Ada ve Object Pascal gibi çeşitli programlama dillerinde bulunan bir işlevdir. Çalışma Zamanı Türü Tanımlaması veya Bilgisi, bir programın çalışma süresinde bir nesnenin veri türünün ayrıntılarıyla ilgili bilgileri tanımlayan ve çıkaran bir işlevdir. Bu işlev, 'typeid' işlevi veya dinamik tip atama gibi tip atama yöntemleri için güvenli bir yol sağlar. Çalışma süresindeki veri türü bilgisini algılar ve operatörler oyundayken veri türünün dönüştürülmesine yardımcı olur.



Dinamik döküm, çalışma zamanında güvenli aşağı döküm için çoğunlukla C++'da kullanılır. Dinamik atamayla çalışmak için temel sınıfın 1 sanal işlevi olmalıdır. Dinamik atama yalnızca polimorfik temel sınıflarla çalışır, çünkü bu bilgiyi güvenli aşağı dökümü belirlemek için kullanır. Dinamik döküm operatörü, dinamik döküm yapar. Artık dinamik döküm ile ilgili kavramları öğrendiğimize göre uygulama kısmına geçebiliriz. Önce aşağıda yazılan C++ programlama dilinde dinamik döküm kullanmak için sözdizimine bakalım:

# 'dynamic_cast (İfade)'

Yukarıdaki ifadede ilk kısım operatörün adını açıklamaktadır; köşeli parantezlerin içine ifademizi dönüştürmemiz gereken veri tipinin adını, yuvarlak parantezlerin içine ise dönüştürmek istediğimiz değişkenin veya nesnenin adını yazıyoruz.

Artık dinamik atama işlecini nasıl kullanacağımızı ve değişkenlerin veri türlerini dönüştürmek için parametreleri nasıl dolduracağımızı bildiğimize göre, onu değişkenlerin veri türlerini dönüştürmek için kullanabiliriz.

Ubuntu 20.04'te Dinamik yayınlama yöntemini kullanma:

Bu konsepti uygulamak için, sınıfın nesnelerini kalıtım yoluyla dönüştürmek için birlikte çalışmak üzere birkaç sınıf kullanmalıyız. Bunu yapmak için öncelikle Ubuntu ortamındaki C++ program dosyasının '.cpp' uzantısıyla depolandığını bilmeliyiz, bu dosyayı masaüstümüzde oluşturmak için bir terminal açın ve 'cd Desktop' yazın. komut satırı, ardından enter tuşuna basın ve '.cpp' uzantılı bir dosya oluşturmak için 'touch filename .cpp' yazın. Şimdi bir temel sınıf ve 2 türetilmiş sınıf oluşturmak için o dosyaya bir kod yazacağız ve sürücü kodunda dinamik döküm operatörünü kullanacağız.

  Grafik kullanıcı arabirimi, metin Açıklama otomatik olarak oluşturulur

Kaydet butonuna tıkladıktan sonra dosyadan çıkın. Terminale geri dönün ve dosya adınız ve '.cpp' uzantılı 'g++' komutunu kullanarak dosyayı oluşturun. Bu komut kullanılarak “.out” uzantılı bir dosya oluşturulacaktır. Artık “./” ve ardından “.out” uzantınızı girerek bu dosyayı çalıştırabilirsiniz.
  Metin Açıklaması otomatik olarak oluşturuldu

Bu programda, temel sınıf işaretçisi, türetilmiş sınıf 1 nesneleri (d1) depolar. Dinamik döküm temel sınıfı, işaretçi Derived1 nesnesini tuttu ve onu geçerli dinamik döküm sağlayan türetilmiş sınıf 1'e tahsis etti.

Çözüm :

Bu makale bize C++ programlama dilinde kullanılan tip döküm yöntemini öğretti. Döküm türü de ayrıntılı olarak tartışıldı ve C++ programlamasında bu tür yöntemleri neden kullandığımıza ihtiyaç duyulduğuna odaklandık. Bilgi getirerek ve RTTI adı verilen doğru dönüştürmeyi doğrulayarak değişkenin veri türünün dönüştürülmesine yardımcı olan yardım işlevini tartıştık. Ayrıca Ubuntu 20.04 ortamında C++ programlama dilindeki bir ifadede dinamik döküm operatörünü kullanarak Dinamik döküm kavramını hayata geçirdik.