Dynamic_Cast C++

Dynamic Cast C



Pelakon dinamik dalam bahasa pengaturcaraan C++ akan dibincangkan dalam artikel ini. Untuk memulakan, kita mesti memahami pengertian pemutus dan pelbagai jenis pemutus. Proses mengubah jenis data pembolehubah dikenali sebagai pemutus. Pemutus terbahagi kepada dua kategori dalam bahasa pengaturcaraan C++: pemutus tersirat dan pemutus eksplisit.

Penukaran jenis data dalam C++:

Jenis casting ialah prosedur mengubah jenis data kepada beberapa jenis data lain. Terdapat dua jenis pemutus atau penukaran jenis dalam bahasa pengaturcaraan C++: pemutus tersirat dan eksplisit. Penukaran jenis automatik ialah nama lain untuk penghantaran taip tersirat. Ia dilakukan oleh pengkompil semasa penyusunan masa nyata dan tidak memerlukan sebarang input atau tindakan pengguna. Apabila terdapat dua jenis jenis data dalam ungkapan, bentuk penghantaran ini berlaku. Sebagai contoh:

  Antara muka pengguna grafik, teks, Perihalan aplikasi dijana secara automatik







Dalam kod yang diberikan, kita dapat melihat bahawa pembolehubah integer dan pembolehubah aksara dimasukkan dalam ungkapan baris terakhir, dan nilai pembolehubah integer 'i' ditukar. Nombor ASCII yang bersamaan dengan 'a' akan ditukar kepada nilai aksara dan ditambah kepada nilai integer pembolehubah 'i' dalam pernyataan ini. Jika nilai pembolehubah 'i' dicetak, hasilnya akan menjadi jumlah kedua-dua nilai ini. Pengkompil secara automatik mengubah jenis data pembolehubah aksara kepada jenis data integer dengan menukarnya kepada nilai standard ASCII abjad di sebelah kanan, yang merupakan contoh hebat penukaran jenis tersirat atau automatik pada masa jalankan.



Sekarang, apabila ia datang kepada pemutus jenis eksplisit atau penukaran jenis, ia bukan proses automatik; pengguna mesti menukar secara manual jenis data pembolehubah kepada jenis pembolehubah lain dalam kod. Jenis data biasanya disusun dalam hierarki berdasarkan ruang ingatan mereka dan jumlah maklumat yang boleh mereka pegang. Jadi, apabila jenis data tertib rendah digunakan untuk menyimpan sebarang maklumat tetapi perlu diubah menjadi jenis data tertib tinggi supaya kehilangan maklumat dapat diminimumkan dan semakin banyak maklumat boleh disimpan, penghantaran jenis eksplisit atau penukaran jenis biasanya selesai. Contohnya, kerana pembolehubah jenis integer tidak boleh menyimpan nilai selepas titik perpuluhan, kita mungkin kehilangan beberapa maklumat jika kita terus menggunakan pembolehubah integer. Untuk mengelakkan kehilangan ini, kami menukar pembolehubah integer kepada pembolehubah apungan, menyimpan nilai selepas titik perpuluhan dan mencegah kehilangan maklumat. Penukaran jenis eksplisit dalam bahasa pengaturcaraan C++ boleh dicapai dalam satu daripada dua cara: melalui tugasan atau dengan menggunakan operator cast. Penukaran tugasan dilakukan dalam ungkapan kod, dan sintaks untuk ungkapan ini disediakan di bawah.



# '(jenis data) ungkapan'

Dalam kod di atas, kita mesti meletakkan jenis data yang sah dalam kurungan, dan selepas kurungan, kita mesti menulis pembolehubah atau ungkapan yang ingin kita ubah suai ke dalam jenis data yang ditulis di dalam kurungan.





Sekarang kita akan melihat jenis penukaran yang dilakukan oleh operator cast dalam bahasa pengaturcaraan C++. Operator cast juga dipanggil operator unary yang memaksa pembolehubah menukar jenis datanya daripada satu sedia ada kepada yang lain. Terdapat empat jenis pengendali pemutus pemutus: Pelakon statik, Pelakon Dinamik, Pemutus pemutus dan Pemutus Semula.

Pemutus dinamik dalam C++:

Pemutus dinamik dalam bahasa pengaturcaraan C++ adalah berdasarkan konsep yang dipanggil RTTI (Run Time Type Identification). RTTI ialah fungsi yang terdapat dalam beberapa bahasa pengaturcaraan seperti C/C++, Ada dan Object Pascal. Pengenalpastian atau Maklumat Jenis Masa Larian ialah fungsi yang mengenal pasti dan mengekstrak maklumat mengenai butiran jenis data objek pada masa jalankan program. Fungsi ini menyediakan laluan selamat untuk kaedah pemutus jenis seperti fungsi 'typeid' atau pemutus jenis dinamik. Ia mengesan maklumat jenis data pada masa larian dan membantu penukaran jenis data apabila pengendali sedang bermain.



Pemutus dinamik kebanyakannya digunakan dalam C++ untuk penuangan bawah selamat masa jalan. Untuk bekerja dengan pelakon dinamik, kelas asas mesti mempunyai 1 fungsi maya. Cast dinamik hanya berfungsi dengan kelas asas polimorfik kerana ia menggunakan maklumat ini untuk menentukan tuangan bawah yang selamat. Pengendali lakonan dinamik melakukan tuangan dinamik. Sekarang setelah kita mengetahui tentang konsep yang berkaitan dengan pemutus dinamik, kita boleh pergi ke bahagian pelaksanaan. Mari kita lihat dahulu sintaks untuk menggunakan pemutus dinamik dalam bahasa pengaturcaraan C++, yang ditulis di bawah:

# “dynamic_cast (Expression)”

Dalam ungkapan di atas, bahagian pertama menerangkan nama pengendali; dalam kurungan sudut, kami menulis nama jenis data yang kami perlukan untuk menukar ungkapan kami, dan dalam kurungan bulat, kami menulis nama pembolehubah atau objek yang ingin kami tukar.

Kini setelah kita tahu cara menggunakan operator cast dinamik dan mengisi parameter untuk menukar jenis data pembolehubah, kita boleh menggunakannya untuk menukar jenis data pembolehubah.

Menggunakan kaedah cast Dinamik dalam Ubuntu 20.04:

Untuk melaksanakan konsep ini, kita mesti menggunakan beberapa kelas untuk digunakan untuk menukar objek kelas melalui warisan. Jadi, untuk berbuat demikian terlebih dahulu, kita mesti terlebih dahulu mengetahui bahawa fail program C++ dalam persekitaran Ubuntu disimpan dengan sambungan '.cpp', jadi untuk mencipta fail ini pada desktop kita, buka terminal dan taip 'cd Desktop' pada baris arahan, kemudian tekan enter dan taip “touch filename .cpp” untuk mencipta fail dengan sambungan “.cpp”. Sekarang kami akan menulis kod dalam fail itu untuk mencipta kelas asas dan 2 kelas terbitan, dan dalam kod pemacu, kami akan menggunakan operator cast dinamik.

  Antara muka pengguna grafik, teks Penerangan dijana secara automatik

Keluar dari fail selepas mengklik butang simpan. Kembali ke terminal dan bina fail menggunakan arahan 'g++' dengan nama fail anda dan sambungan '.cpp'. Fail dengan sambungan '.out' akan dibuat menggunakan arahan ini. Anda kini boleh menjalankan fail tersebut dengan memasukkan “./” diikuti dengan sambungan “.out” anda.
  Perihalan Teks dijana secara automatik

Dalam atur cara ini, penunjuk kelas asas menyimpan objek kelas 1 yang diperolehi (d1). Kelas asas tuangan dinamik, penuding mengekalkan objek Derived1 dan memperuntukkannya kepada kelas terbitan 1, yang menyediakan tuangan dinamik yang sah.

Kesimpulan :

Artikel ini mengajar kami kaedah pemutus jenis yang digunakan dalam bahasa pengaturcaraan C++. Jenis pemutus juga dibincangkan secara terperinci, dan kami memberi tumpuan kepada keperluan mengapa kami menggunakan kaedah sedemikian dalam pengaturcaraan C++. Kami membincangkan fungsi bantuan yang membantu penukaran jenis data pembolehubah dengan mengambil maklumat dan mengesahkan penukaran yang betul yang dipanggil RTTI. Kami juga melaksanakan konsep pemutus Dinamik dengan menggunakan operator pemutus dinamik dalam ungkapan dalam bahasa pengaturcaraan C++ dalam persekitaran Ubuntu 20.04.