가상 함수 및 기본 매개변수 사용
C에서 가상 함수를 사용하면 파생 클래스가 고유한 특수 동작으로 기본 클래스 구현을 재정의할 수 있습니다. 그러나 기본 매개변수 값의 경우 상속 규칙은 일반 매개변수와 다릅니다.
기본 클래스의 기본 매개변수 값
가상 함수는 기본 매개변수 값을 가질 수 있습니다. 기본 클래스 선언에 지정됩니다. 이러한 기본값은 파생 클래스에서 상속되지 않습니다. 대신 파생 클래스는 자체 기본값을 지정하거나 이를 모두 생략해야 합니다.
기본 매개변수 선택
파생 클래스 객체를 통해 가상 함수를 호출할 때 기본 매개변수는 사용되는 값은 함수를 호출하는 데 사용되는 포인터 또는 참조의 정적 유형에 따라 결정됩니다. 기본 클래스 개체나 포인터를 통해 호출이 이루어지면 기본 클래스의 기본값이 사용됩니다. 반대로 파생 클래스 객체나 포인터를 통해 호출이 이루어지면 파생 클래스의 기본값이 사용됩니다.
예
다음 예를 고려하세요.
struct Base { virtual void f(int a = 7); }; struct Derived : public Base { void f(int a = 9); };
Base 포인터를 통해 f()를 호출하면 Base에 정의된 기본값인 7이 사용됩니다. 그러나 Derived 포인터를 통해 f()를 호출하면 Derived에 정의된 기본값인 9를 사용하게 됩니다.
교차 플랫폼 고려 사항
C 03 및 C 11 표준은 위에 설명된 동작을 지정하며, 다른 컴파일러는 기본 매개변수 상속을 다르게 처리할 수 있습니다. 잠재적인 불일치를 피하기 위해 항상 파생 클래스에서 기본 매개변수 값을 명시적으로 지정하는 것이 좋습니다.
결론
가상 함수는 기본 매개변수를 가질 수 있지만 이러한 기본값은 그렇지 않습니다. 파생 클래스에 의해 상속됩니다. 가상 함수 호출에 사용되는 기본값은 함수가 호출된 객체의 정적 유형에 따라 결정되므로 파생 클래스가 필요에 따라 자체 기본 동작을 사용자 정의할 수 있습니다.
위 내용은 C 가상 함수 및 상속에서 기본 매개변수 값은 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!