En C++, les exceptions de classe dérivée peuvent être interceptées via des pointeurs de classe de base. En utilisant des fonctions virtuelles et des blocs try-catch, nous pouvons : Lancer une exception de classe dérivée L'attraper à l'aide d'un pointeur de classe de base Libérer automatiquement l'objet de classe dérivée en supprimant le pointeur de classe de base
Gestion des exceptions en C++ : Catch classe dérivée pointeur via le pointeur de classe de base Exceptions de classe
En C++, la gestion des exceptions est un mécanisme de gestion des erreurs et des exceptions. Lorsqu'une exception se produit, un objet d'exception est généré. Les objets d'exception stockent des informations sur l'erreur, telles que le message d'erreur et l'emplacement où l'erreur s'est produite.
La capture des exceptions de classe dérivée via des pointeurs de classe de base est un moyen flexible de gérer les exceptions des classes dérivées. Ceci est réalisé à l’aide de blocs try-catch et de fonctions virtuelles.
Exemple de code :
Supposons que nous ayons une classe de base Shape et une classe dérivée Square. La classe Shape possède une fonction virtuelle GetArea()
, que la classe Square remplace. 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()
lève une exception dans une classe dérivée Square
. 🎜main()
, nous créons un pointeur Shape*
pointant vers un objet Square
. 🎜shape->GetArea()
est appelé, il appelle en fait la fonction prioritaire de la classe dérivée et lève une exception. 🎜catch
utilise le pointeur de classe de base base_ptr
pour intercepter l'objet d'exception. 🎜base_ptr
et libérons automatiquement le pointeur vers l'objet de classe dérivé. 🎜🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!