Rumah >pembangunan bahagian belakang >C++ >Pengendalian pengecualian dalam teknologi C++: Bagaimana untuk menangkap pengecualian kelas terbitan melalui penunjuk kelas asas?
Dalam C++, pengecualian kelas terbitan boleh ditangkap melalui penunjuk kelas asas. Menggunakan fungsi maya dan blok cuba-tangkap, kita boleh: Lemparkan pengecualian kelas terbitan Tangkapnya menggunakan penuding kelas asas Lepaskan objek kelas terbitan secara automatik dengan memadamkan penuding kelas asas
Pengendalian pengecualian dalam C++: Menangkap kelas terbitan melalui penuding kelas asas Class Exceptions
Dalam C++, pengendalian pengecualian ialah mekanisme untuk mengendalikan ralat dan pengecualian. Apabila pengecualian berlaku, objek pengecualian dilemparkan. Objek pengecualian menyimpan maklumat tentang ralat, seperti mesej ralat dan lokasi ralat berlaku.
Menangkap pengecualian kelas terbitan melalui penunjuk kelas asas ialah cara yang fleksibel untuk mengendalikan pengecualian daripada kelas terbitan. Ini dicapai dengan menggunakan blok cuba-tangkap dan fungsi maya.
Contoh Kod:
Andaikan kita mempunyai kelas asas Bentuk dan kelas terbitan Square. Kelas Shape mempunyai fungsi maya GetArea()
, yang digantikan oleh kelas Square. GetArea()
,Square 类覆盖了该函数。
class Shape { public: virtual int GetArea() const = 0; }; class Square : public Shape { public: Square(int side) : side(side) {} int GetArea() const override { return side * side; } private: int side; }; int main() { try { Shape* shape = new Square(5); shape->GetArea(); // 抛出异常 } catch (Shape* base_ptr) { // 捕获 Shape* 指针的基类指针 delete base_ptr; // 确保释放派生类对象 std::cout << "异常捕获成功!" << std::endl; } return 0; }
解释:
GetArea()
在派生类 Square
中抛出异常。main()
函数中,我们创建一个 Shape*
指针,指向一个 Square
对象。shape->GetArea()
时,它实际上调用的是派生类的覆盖函数,并且抛出一个异常。catch
块使用基类指针 base_ptr
捕获异常对象。base_ptr
rrreeeGetArea()
membuang pengecualian dalam kelas terbitan Square
. 🎜main()
, kami mencipta penunjuk Shape*
yang menunjuk ke objek Square
. 🎜shape->GetArea()
dipanggil, ia sebenarnya memanggil fungsi overriding kelas terbitan dan membuang pengecualian. 🎜 blok catch
menggunakan penunjuk kelas asas base_ptr
untuk menangkap objek pengecualian. 🎜base_ptr
dan secara automatik melepaskan penuding ke objek kelas terbitan. 🎜🎜Atas ialah kandungan terperinci Pengendalian pengecualian dalam teknologi C++: Bagaimana untuk menangkap pengecualian kelas terbitan melalui penunjuk kelas asas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!