가상 함수는 파생 클래스가 기본 클래스의 멤버 함수를 재정의할 수 있도록 하는 다형성 메커니즘입니다. 선언: 함수 이름 앞에 virtual 키워드를 추가합니다. 호출: 기본 클래스 포인터 또는 참조를 사용하여 컴파일러는 파생 클래스의 적절한 구현에 동적으로 바인딩합니다. 실제 사례: 기본 클래스인 Shape와 파생 클래스인 Rectangle 및 Circle을 정의하여 다형성의 가상 함수를 적용하여 면적을 계산하고 모양을 그리는 방법을 보여줍니다.
C++의 가상 함수
가상 함수는 파생 클래스가 기본 클래스의 멤버 함수를 재정의할 수 있도록 하는 다형성 메커니즘입니다. 이를 통해 프로그래머는 파생 클래스가 해당 동작의 인스턴스별 구현을 제공하도록 허용하면서 기본 클래스에서 공통 동작을 정의할 수 있습니다.
가상 함수 선언
가상 함수를 선언하려면 함수 이름 앞에 virtual
키워드를 넣으세요. 예:
class Base { public: virtual void print() const; };
가상 함수 호출
기본 클래스 포인터 또는 참조를 사용하여 가상 함수를 호출합니다. 컴파일러는 파생 클래스의 적절한 구현에 동적으로 바인딩합니다. 예:
void doSomething(Base* base) { base->print(); }
실제 사례
다음은 가상 함수 사용 예입니다.
#include <iostream> class Shape { public: virtual double area() const = 0; virtual void draw() const = 0; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : width_(width), height_(height) {} double area() const override { return width_ * height_; } void draw() const override { std::cout << "Drawing rectangle" << std::endl; } private: double width_; double height_; }; class Circle : public Shape { public: Circle(double radius) : radius_(radius) {} double area() const override { return 3.14 * radius_ * radius_; } void draw() const override { std::cout << "Drawing circle" << std::endl; } private: double radius_; }; int main() { Shape* rectangle = new Rectangle(5, 10); Shape* circle = new Circle(5); std::cout << rectangle->area() << std::endl; // Output: 50 std::cout << circle->area() << std::endl; // Output: 78.5 rectangle->draw(); // Output: Drawing rectangle circle->draw(); // Output: Drawing circle return 0; }
위 내용은 C++에서 가상 함수를 선언하고 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!