가상 함수는 기본 클래스에서 virtual로 선언되고 하나 이상의 파생 클래스에서 재정의된 멤버 함수, 즉 virtual 키워드로 수정된 멤버 함수를 의미합니다. 형식은 "가상 함수 반환 유형 함수 이름(매개 변수) 목록) {함수 본문}'.
기본 클래스에서 가상으로 선언되고 하나 이상의 파생 클래스에서 재정의된 멤버 함수의 사용 형식은 다음과 같습니다. virtual 函数返回类型 函数名(参数表) {函数体}
다형성을 달성하려면 기본 클래스 포인터를 파생 클래스에 전달하거나 참조에 액세스합니다. 파생 클래스에서 동일한 이름의 재정의된 멤버 함수입니다.
간단히 말해서 virtual 키워드로 수정된 멤버 함수는 가상 함수입니다.
먼저: 함수를 가상 함수로 정의한다는 개념을 강조하세요. 이는 해당 함수가 구현되지 않은 함수라는 의미는 아닙니다. 기본 클래스의 포인터를 이용하여 하위 클래스의 함수를 호출할 수 있도록 하기 위해 가상 함수로 정의됩니다. 함수를 순수 가상 함수로 정의한다는 것은 해당 함수가 구현되지 않음을 의미합니다. 순수 가상 함수를 정의하는 목적은 인터페이스를 구현하고 사양 역할을 하는 것입니다. 이 클래스를 상속하는 프로그래머는 이 함수를 구현해야 합니다.
예:
class A { public: virtual void foo() { cout<<"A::foo() is called"<<endl; } }; class B:public A { public: void foo() { cout<<"B::foo() is called"<<endl; } }; int main(void) { A *a = new B(); a->foo(); // 在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的! return 0; }
이 예는 가상 기능의 일반적인 응용 프로그램입니다. 이 예를 통해 가상 기능에 대한 몇 가지 개념을 가질 수 있습니다. 이는 소위 "지연 바인딩" 또는 "동적 바인딩"을 기반으로 합니다. 클래스 함수 호출은 컴파일 타임이 아니라 런타임에 결정됩니다. 코드를 작성할 때 호출되는 함수가 기본 클래스의 함수인지 파생 클래스의 함수인지 확인할 수 없기 때문에 이를 "가상" 함수라고 합니다. 가상 함수는 포인터나 참조를 통해서만 다형성 효과를 얻을 수 있습니다.
위 내용은 가상 함수란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!