C++의 가상 함수를 사용하면 파생 클래스가 기본 클래스에서 상속된 메서드를 재정의하여 다형성을 달성할 수 있습니다. 구문은 기본 클래스에서 virtual 키워드를 사용하여 가상 함수를 선언하고 파생 클래스에서 override를 사용하여 재정의하는 것입니다. 포인터나 참조를 통해 가상 함수를 호출하면 파생 클래스 개체가 기본 클래스 가상 함수를 호출할 수 있습니다. 가상 함수의 주요 기능에는 다형성 구현, 동적 바인딩 지원 및 추상화 제공이 포함됩니다.
C++의 가상 함수
소개
가상 함수는 파생 클래스가 기본 클래스에서 상속된 메서드를 재정의할 수 있도록 하는 특수한 유형의 멤버 함수입니다. 이는 다형성을 가능하게 합니다. 즉 파생 클래스 객체는 기본 클래스 객체와 동일한 방식으로 처리될 수 있습니다.
Syntax
가상 함수는 virtual
키워드를 사용하여 기본 클래스에서 선언됩니다. virtual
关键字:
class Base { public: virtual void func() { /* ... */ } };
在派生类中,可以重新定义虚函数:
class Derived : public Base { public: void func() override { /* ... */ } };
虚函数调用通过指针或引用完成,因此派生类对象可以调用父类中的虚函数:
Base* base = new Derived; base->func(); // 调用 Derived::func()
实战案例
考虑以下示例:
class Shape { public: virtual double area() const = 0; }; class Circle : public Shape { public: Circle(double radius) : _radius(radius) {} double area() const override { return _radius * _radius * 3.14; } double _radius; }; class Square : public Shape { public: Square(double side) : _side(side) {} double area() const override { return _side * _side; } double _side; }; int main() { Shape* shapes[] = {new Circle(5), new Square(4)}; double total_area = 0; for (Shape* shape : shapes) { total_area += shape->area(); } std::cout << "Total area: " << total_area << std::endl; }
此示例中,基类 Shape
定义了一个抽象函数 area()
,派生类 Circle
和 Square
提供自己的实现。主函数创建一个 Shape
rrreee
rrreee가상 함수 호출은 다음을 통해 이루어집니다. 포인터 또는 참조가 완료되었으므로 파생 클래스 개체가 상위 클래스의 가상 함수를 호출할 수 있습니다. rrreee
실용적인 예
Shape
는 추상화 함수 area()
를 정의하고 파생 클래스 Circle
및 Square
는 자체 구현을 제공합니다. 메인 함수는 파생 클래스의 객체를 가리키는 Shape
포인터 배열을 생성하고 가상 함수 호출을 통해 전체 면적을 계산합니다. 위 내용은 C++ 함수를 가상으로 선언할 수 있나요? 가상 기능의 역할은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!