Bolehkah Anda Memanjangkan Kelas Lain dalam Pustaka Standard C Melebihi `std::exception`?

Mary-Kate Olsen
Lepaskan: 2024-11-03 12:33:31
asal
499 orang telah melayarinya

Can You Extend Other Classes in the C   Standard Library Beyond `std::exception`?

Memperluas Perpustakaan Standard C melalui Warisan

Perpustakaan standard C, yang dilihat secara meluas sebagai benteng warisan yang tidak dapat didekati, menafikan pengecualian tersembunyi dalam pangkatnya. Kelas std::exception berdiri sendiri sebagai entiti tunggal yang direka secara eksplisit untuk sambungan. Ini menimbulkan persoalan:

Bolehkah Kelas Perpustakaan Standard Lain Dilanjutkan?

Walaupun tiada senarai muktamad wujud, jawapannya bergantung pada mentafsir maksud Standard. Pendekatan pragmatik melibatkan meneliti kriteria berikut:

  • Ketiadaan Kaedah Maya: Kelas tanpa kaedah maya tidak dimaksudkan untuk warisan asas (cth., std::vector).
  • Sifat Templat: Templat menjamin penilaian; pengkhususan selalunya mencukupi untuk penyesuaian.
  • Mekanisme Berasaskan Dasar: Kelas ini (cth., std::char_traits) biasanya menentang warisan.
  • Implikasi Warisan daripada Kelas Perpustakaan Standard
  • Melanjutkan std::exception menonjolkan kebimbangan lain:
Kepatuhan kepada Jangkaan Antaramuka

Apabila mewarisi daripada kelas perpustakaan standard, antara muka yang diwarisi mesti dihormati. Sebagai contoh, subkelas yang mengubah fungsi ahli what() untuk mengembalikan penunjuk nol dan bukannya penerangan yang sah akan melanggar antara muka yang dinyatakan dalam Standard ISO. Walaupun bukan isu pematuhan standard, ia menjejaskan ketepatan dan menjejaskan prinsip kebolehgantian untuk kelas asas.

Atas ialah kandungan terperinci Bolehkah Anda Memanjangkan Kelas Lain dalam Pustaka Standard C Melebihi `std::exception`?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan