>백엔드 개발 >C++ >C에서 가상 함수와 순수 가상 함수의 차이점은 무엇입니까?

C에서 가상 함수와 순수 가상 함수의 차이점은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-22 03:18:12205검색

What's the Difference Between Virtual and Pure Virtual Functions in C  ?

가상 vs 순수 가상 함수

객체 지향 프로그래밍에서 가상 함수와 순수 가상 함수는 다형성을 이해하는 데 필수적인 개념입니다.

가상이란 무엇입니까? 함수?

가상 함수는 동적 디스패치를 ​​허용하는 기본 클래스의 상속 및 재정의 가능한 함수입니다. 객체에서 가상 함수가 호출되면 런타임 시스템은 객체의 유형에 따라 실행할 실제 함수 구현을 결정합니다.

예:

class Base {
public:
    virtual void foo() { std::cout << "Base::foo()" << std::endl; }
};

class Derived : public Base {
public:
    void foo() override { std::cout << "Derived::foo()" << std::endl; }
};

In 이 예에서는 Base 및 Derived 클래스 모두 foo() 함수를 구현합니다. 파생 객체에서 foo()가 호출되면 "Derived::foo()"를 인쇄하는 재정의된 버전이 실행됩니다.

순수 가상 함수란 무엇인가요?

추상 함수라고도 하는 순수 가상 함수는 기본 클래스에 정의되지 않은 가상 함수입니다. 이를 구현하려면 파생 클래스가 필요한 자리 표시자 역할을 합니다.

예:

class Base {
public:
    virtual void foo() = 0; // pure virtual function
};

이 예는 Base에서 foo()를 순수 가상 함수로 선언합니다. 수업. 파생 클래스는 정의를 제공하기 위해 이 함수를 구현해야 합니다. 그렇지 않으면 파생 클래스가 추상화되어 인스턴스화될 수 없습니다.

가상 함수와 순수 가상 함수의 차이점

  • 가상 함수를 재정의하고 사용자 지정할 수 있습니다. 파생 클래스에 있지만 기본 클래스에 기본 구현이 있습니다.
  • 순수 가상 함수에는 기본 클래스에 구현이 없습니다. 클래스이며 파생 클래스에서 구현되어야 합니다.
  • 순수 가상 함수는 기본 클래스를 추상화합니다(즉, 직접 인스턴스화할 수 없음).
  • 가상 함수를 사용하여 다형성을 구현할 수 있습니다. 동일한 함수 호출에 응답할 때 서로 다른 파생 클래스의 개체가 다르게 동작하도록 허용합니다.
  • 순수 가상 함수는 기본 클래스와 파생 클래스 간의 계약을 시행하여 다음을 보장합니다. 구현은 모든 비추상 파생 클래스에 존재합니다.

위 내용은 C에서 가상 함수와 순수 가상 함수의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.