Dynamic_Cast C++

Dynamic Cast C



Pemeran dinamis dalam bahasa pemrograman C++ akan dibahas dalam artikel ini. Untuk memulai, kita harus memahami pengertian casting dan banyak jenis casting. Proses mengubah tipe data variabel dikenal sebagai casting. Casting dibagi menjadi dua kategori dalam bahasa pemrograman C++: casting implisit dan casting eksplisit.

Konversi tipe data dalam C++:

Type casting adalah prosedur mengubah tipe data ke beberapa tipe data lainnya. Ada dua jenis casting atau konversi tipe dalam bahasa pemrograman C++: casting implisit dan eksplisit. Konversi tipe otomatis adalah nama lain untuk typecasting implisit. Ini dilakukan oleh kompiler selama kompilasi waktu nyata dan tidak memerlukan input atau tindakan pengguna apa pun. Ketika ada dua jenis tipe data dalam sebuah ekspresi, bentuk casting ini terjadi. Sebagai contoh:

  Antarmuka pengguna grafis, teks, Deskripsi aplikasi dibuat secara otomatis







Dalam kode yang diberikan, kita dapat melihat bahwa variabel bilangan bulat dan variabel karakter dimasukkan dalam ekspresi baris terakhir, dan nilai variabel bilangan bulat 'i' diubah. Nomor ASCII yang setara dengan 'a' akan dikonversi menjadi nilai karakter dan ditambahkan ke nilai integer dari variabel 'i' dalam pernyataan ini. Jika nilai variabel “i” dicetak, hasilnya akan menjadi total dari kedua nilai tersebut. Kompiler secara otomatis mengubah tipe data variabel karakter menjadi tipe data integer dengan mengonversinya ke nilai standar ASCII dari alfabet di sebelah kanan, yang merupakan contoh yang bagus untuk konversi tipe implisit atau otomatis pada waktu proses.



Sekarang, jika menyangkut pengecoran tipe eksplisit atau konversi tipe, ini bukanlah proses otomatis; pengguna harus secara manual mengonversi tipe data variabel ke tipe variabel lain dalam kode. Tipe data biasanya disusun dalam hierarki berdasarkan ruang memori dan jumlah informasi yang dapat disimpan. Jadi, ketika tipe data orde rendah digunakan untuk menyimpan informasi apa pun tetapi harus diubah menjadi tipe data orde tinggi sehingga kehilangan informasi dapat diminimalkan dan semakin banyak informasi dapat disimpan, pengecoran tipe eksplisit atau konversi tipe biasanya dilakukan. selesai. Misalnya, karena variabel tipe integer tidak dapat menyimpan nilai setelah titik desimal, kita mungkin kehilangan beberapa informasi jika kita terus menggunakan variabel integer. Untuk menghindari kerugian ini, kami mengonversi variabel integer menjadi variabel float, menyimpan nilai setelah titik desimal dan mencegah hilangnya informasi. Konversi tipe eksplisit dalam bahasa pemrograman C++ dapat dilakukan dengan salah satu dari dua cara: melalui penugasan atau dengan memanfaatkan operator pemeran. Konversi penugasan dilakukan dalam ekspresi kode, dan sintaks untuk ekspresi ini disediakan di bawah ini.



# 'ekspresi (tipe data)'

Pada kode di atas, kita harus meletakkan tipe data yang valid di dalam tanda kurung, dan setelah tanda kurung, kita harus menulis variabel atau ekspresi yang ingin kita ubah ke dalam tipe data yang tertulis di dalam tanda kurung.





Sekarang kita akan melihat jenis konversi yang dilakukan oleh operator pemeran dalam bahasa pemrograman C++. Operator Cast juga disebut operator unary yang memaksa variabel untuk mengubah tipe datanya dari satu yang sudah ada ke yang lain. Ada empat jenis operator pemeran casting: Cast statis, Cast dinamis, Cast const, dan Re-interpretasikan cast.

Pengecoran dinamis dalam C++:

Pengecoran dinamis dalam bahasa pemrograman C++ didasarkan pada konsep yang disebut RTTI (Run Time Type Identification). RTTI adalah fungsi yang hadir dalam beberapa bahasa pemrograman seperti C/C++, Ada, dan Object Pascal. Identifikasi atau Informasi Tipe Run-Time adalah fungsi yang mengidentifikasi dan mengekstrak informasi mengenai detail tipe data objek pada waktu berjalan suatu program. Fungsi ini menyediakan jalur yang aman untuk metode pengecoran tipe seperti fungsi 'typeid' atau pengecoran tipe dinamis. Ini mendeteksi informasi tipe data pada waktu berjalan dan membantu konversi tipe data saat operator sedang bermain.



Casting dinamis sebagian besar digunakan dalam C++ untuk run-time safe down casting. Untuk bekerja dengan gips dinamis, kelas dasar harus memiliki 1 fungsi virtual. Pemeran dinamis hanya berfungsi dengan kelas dasar polimorfik karena menggunakan informasi ini untuk menentukan pengecoran yang aman. Operator pemeran dinamis melakukan pengecoran dinamis. Sekarang setelah kita mengetahui tentang konsep yang terkait dengan pengecoran dinamis, kita dapat menuju ke bagian implementasi. Mari kita lihat sintaks untuk menggunakan casting dinamis dalam bahasa pemrograman C++, yang tertulis di bawah ini:

# 'dynamic_cast (Ekspresi)'

Pada ekspresi di atas, bagian pertama mendeskripsikan nama operator; dalam kurung siku, kita menulis nama tipe data yang kita perlukan untuk mengubah ekspresi kita, dan dalam kurung bulat, kita menulis nama variabel atau objek yang ingin kita ubah.

Sekarang setelah kita mengetahui cara menggunakan operator gips dinamis dan mengisi parameter untuk mengonversi tipe data variabel, kita dapat menggunakannya untuk mengonversi tipe data variabel.

Menggunakan metode pemeran Dinamis di Ubuntu 20.04:

Untuk mengimplementasikan konsep ini, kita harus menggunakan beberapa kelas untuk bekerja dengan mengonversi objek kelas dengan pewarisan. Nah, untuk melakukannya terlebih dahulu, kita harus tahu dulu bahwa file program C++ di lingkungan Ubuntu disimpan dengan ekstensi “.cpp”, jadi untuk membuat file ini di desktop kita, buka terminal dan ketik “cd Desktop” di baris perintah, lalu tekan enter dan ketik 'touch filename .cpp' untuk membuat file dengan ekstensi '.cpp'. Sekarang kita akan menulis kode di file itu untuk membuat kelas dasar dan 2 kelas turunan, dan di kode driver, kita akan menggunakan operator gips dinamis.

  Antarmuka pengguna grafis, Deskripsi teks dibuat secara otomatis

Keluar dari file setelah mengklik tombol simpan. Kembali ke terminal dan buat file menggunakan perintah 'g++' dengan nama file Anda dan ekstensi '.cpp'. File dengan ekstensi '.out' akan dibuat menggunakan perintah ini. Anda sekarang dapat menjalankan file itu dengan memasukkan './' diikuti dengan ekstensi '.out'.
  Deskripsi Teks dihasilkan secara otomatis

Dalam program ini, pointer kelas dasar menyimpan objek turunan kelas 1 (d1). Kelas dasar pengecoran dinamis, penunjuk mempertahankan objek Derived1 dan mengalokasikannya ke kelas turunan 1, yang menyediakan pengecoran dinamis yang valid.

Kesimpulan :

Artikel ini mengajari kami metode pengecoran tipe yang digunakan dalam bahasa pemrograman C++. Jenis casting juga dibahas secara rinci, dan kami fokus pada kebutuhan mengapa kami menggunakan metode tersebut dalam pemrograman C++. Kami membahas fungsi bantuan yang membantu konversi tipe data variabel dengan mengambil informasi dan memverifikasi konversi yang benar yang disebut RTTI. Kami juga mengimplementasikan konsep Dynamic casting dengan menggunakan operator dynamic cast dalam ekspresi dalam bahasa pemrograman C++ di lingkungan Ubuntu 20.04.