Rumah > pembangunan bahagian belakang > C++ > Apakah Penghirisan Objek dan Bilakah Ia Berlaku dalam Pewarisan?

Apakah Penghirisan Objek dan Bilakah Ia Berlaku dalam Pewarisan?

DDD
Lepaskan: 2024-12-29 02:17:10
asal
211 orang telah melayarinya

What is Object Slicing and When Does it Occur in Inheritance?

Penghirisan Objek: Kehilangan Data dalam Warisan

Dalam pengaturcaraan berorientasikan objek, warisan membenarkan kelas melanjutkan fungsi kelas induknya. Walau bagaimanapun, mekanisme pewarisan ini boleh memperkenalkan fenomena yang dikenali sebagai penghirisan objek, yang boleh mengakibatkan kehilangan data.

Apakah Penghirisan Objek?

Penghirisan objek berlaku apabila objek daripada kelas terbitan diberikan kepada contoh kelas asas. Semasa tugasan ini, sebahagian daripada data kelas yang diperolehi menjadi tidak boleh diakses dan "dihiris".

Bilakah Penghirisan Objek Berlaku?

Pertimbangkan dua kelas berikut:

class A {
   int foo;
};

class B : public A {
   int bar;
};
Salin selepas log masuk

Satu kejadian kelas B mengandungi dua ahli data: foo (diwarisi daripada A) dan bar. Walau bagaimanapun, jika anda menetapkan objek jenis B kepada contoh jenis A seperti berikut:

B b;
A a = b;
Salin selepas log masuk

Bar ahli data dalam objek b menjadi tidak boleh diakses dalam objek a, mengakibatkan penghirisan objek. Ini berlaku kerana a dianggap sebagai contoh kelas asas dan ia tidak mempunyai pengetahuan tentang ahli bar yang ditakrifkan dalam kelas terbitan B.

Atas ialah kandungan terperinci Apakah Penghirisan Objek dan Bilakah Ia Berlaku dalam Pewarisan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan