>  기사  >  백엔드 개발  >  가상 함수란 무엇입니까?

가상 함수란 무엇입니까?

清浅
清浅원래의
2019-05-05 16:54:4815928검색

가상 함수는 기본 클래스에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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