


Mengapakah Kita Tidak Boleh Menukar Penunjuk-ke-Penuding kepada Kelas Asas dalam C ?
Oct 28, 2024 am 04:42 AMPenukaran Tersirat Penunjuk-ke-Penunjuk Antara Kelas Terbitan dan Asas
Dalam C , kod berikut menimbulkan ralat:
<code class="cpp">Child **cc = &c; Base **bb = cc;</code>
Mesej ralat menunjukkan bahawa tiada penukaran tersirat daripada Kanak-kanak** kepada Pangkalan**. Walau bagaimanapun, adalah dibenarkan untuk menetapkan penuding anak kepada penuding asas:
<code class="cpp">Child *c = new Child(); Base *b = c;</code>
Untuk memahami sebab perbezaan ini wujud, pertimbangkan perkara yang akan berlaku jika penukaran tersirat dibenarkan. Seseorang kemudiannya boleh melakukan perkara berikut:
<code class="cpp">*bb = new Base;</code>
Ini akan menyebabkan c menunjuk kepada contoh Base, yang akan melanggar konsep kelas terbitan dan asas. Oleh itu, C melarang penukaran tersirat ini.
Untuk membenarkan penugasan antara Child** dan Base**, seseorang boleh menggunakan cast gaya C atau reinterpret_cast, tetapi mereka mengorbankan keselamatan jenis. Tiada cara untuk mencapai penukaran ini dengan hantaran tersirat atau hantaran_statik.
Atas ialah kandungan terperinci Mengapakah Kita Tidak Boleh Menukar Penunjuk-ke-Penuding kepada Kelas Asas dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Gulc: Perpustakaan C dibina dari awal

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Penggunaan dan perkongsian frasa yang berbeza

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?
