C++에서는 기본 클래스 포인터를 통해 파생 클래스 예외를 포착할 수 있습니다. 가상 함수와 try-catch 블록을 사용하여 다음을 수행할 수 있습니다. 파생 클래스 예외 발생 기본 클래스 포인터를 사용하여 이를 포착 기본 클래스 포인터를 삭제하여 파생 클래스 객체를 자동으로 해제
C++에서 예외 처리: 파생 클래스 포착 기본 클래스 포인터를 통한 포인터 클래스 예외
C++에서 예외 처리는 오류와 예외를 처리하기 위한 메커니즘입니다. 예외가 발생하면 예외 개체가 발생합니다. 예외 개체는 오류 메시지, 오류가 발생한 위치 등 오류에 대한 정보를 저장합니다.
기본 클래스 포인터를 통해 파생 클래스 예외를 포착하는 것은 파생 클래스의 예외를 처리하는 유연한 방법입니다. 이는 try-catch 블록과 가상 함수를 사용하여 달성됩니다.
코드 예:
기본 클래스 Shape와 파생 클래스 Square가 있다고 가정합니다. Shape 클래스에는 Square 클래스가 재정의하는 가상 함수 GetArea()
가 있습니다. 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()
는 파생 클래스 Square
에서 예외를 발생시킵니다. 🎜main()
함수에서 Square
개체를 가리키는 Shape*
포인터를 생성합니다. 🎜shape->GetArea()
가 호출되면 실제로 파생 클래스의 재정의 함수를 호출하고 예외가 발생합니다. 🎜catch
블록은 기본 클래스 포인터 base_ptr
를 사용하여 예외 객체를 포착합니다. 🎜base_ptr
을 삭제하고 파생 클래스 객체에 대한 포인터를 자동으로 해제합니다. 🎜🎜위 내용은 C++ 기술의 예외 처리: 기본 클래스 포인터를 통해 파생 클래스 예외를 잡는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!