함수 재작성을 통해 하위 클래스는 기본 클래스와 동일한 이름의 함수를 재정의하여 하위 클래스별 기능을 구현할 수 있습니다. 이름 조회 및 유형 일치를 기반으로 하위 클래스가 동일한 이름의 함수를 정의하면 기본 클래스 함수가 다시 작성됩니다. 이를 통해 하위 클래스는 서로 다른 구현을 제공할 수 있습니다. 예를 들어 예제의 Circle 및 Rectangle 클래스는 자체 면적을 계산하기 위해 Shape 클래스의area() 함수를 재정의합니다.
C++ 함수 재작성: 하위 클래스별 함수 구현
함수 재작성은 C++의 중요한 메커니즘으로, 이를 통해 하위 클래스는 기본 클래스에서 동일한 이름을 가진 함수의 동작을 재정의할 수 있습니다. 이는 하위 클래스에 특정한 특정 기능을 정의하는 데 유용합니다.
원리
함수 재작성은 이름 조회 및 유형 일치 규칙을 기반으로 합니다. 함수가 호출되면 컴파일러는 범위에서 이름이 일치하는 함수를 검색합니다. 오버로드된 함수가 여러 개 발견되면 가장 일치하는 원칙이 선택에 사용됩니다.
하위 클래스가 기본 클래스와 동일한 이름의 함수를 정의하는 경우 하위 클래스의 함수가 기본 클래스의 함수를 재정의합니다. 이를 통해 하위 클래스는 기본 클래스와 다른 구현을 제공할 수 있습니다.
실용 사례
일반 모양을 나타내는 Shape
기본 클래스가 있는 시나리오를 생각해 보세요. 파생 클래스 Circle
및 Rectangle
은 각각 원과 직사각형을 나타냅니다. 우리는 이 도형들의 면적을 계산해야 합니다. Shape
基类,表示一个通用形状。派生类 Circle
和 Rectangle
分别表示圆形和矩形。我们需要计算这些形状的面积。
基类 Shape
class Shape { public: virtual double area() const = 0; // 纯虚函数 };
派生类 Circle
class Circle : public Shape { public: Circle(double radius) : radius(radius) {} double area() const override { return M_PI * radius * radius; } private: double radius; };
派生类 Rectangle
class Rectangle : public Shape { public: Rectangle(double width, double height) : width(width), height(height) {} double area() const override { return width * height; } private: double width, height; };
使用
我们可以使用这些类来计算不同形状的面积:
int main() { Circle circle(5.0); Rectangle rectangle(3.0, 4.0); std::cout << "Area of circle: " << circle.area() << std::endl; std::cout << "Area of rectangle: " << rectangle.area() << std::endl; return 0; }
输出:
Area of circle: 78.5398 Area of rectangle: 12.0
在这个示例中,Circle
和 Rectangle
类重写了 Shape
类中定义的 area()
Circle
및 Rectangle
클래스는 Shape
에 정의된 area()
함수를 재정의합니다. > 수업 . 이를 통해 각 모양에 특정한 면적 계산 논리를 구현할 수 있습니다. 🎜위 내용은 실제로 C++ 함수 재작성: 하위 클래스별 함수를 구현하는 요령의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!