다형성과 함수 오버로드는 상호 작용합니다. 기본 클래스에서 오버로드된 함수를 만들고 파생 클래스에서 이러한 함수 버전을 재정의합니다. 상위 클래스 포인터 또는 참조는 하위 클래스 객체를 가리키고 객체의 실제 유형에 따라 다른 메서드를 호출할 수 있습니다. 샘플 코드에서 Shape 기본 클래스는 Area() 순수 가상 함수를 선언하고 파생 클래스 Rectangle 및 Circle은 Area() 메서드를 재정의하여 해당 면적을 계산합니다.
C++에서 다형성과 함수 오버로딩의 상호 작용
C++에서 함수 오버로딩을 사용하면 동일한 함수 이름을 사용하여 다양한 매개변수 목록을 가진 다양한 버전의 함수를 생성할 수 있습니다.
다형성을 사용하면 하위 클래스 객체를 상위 클래스 유형으로 처리할 수 있습니다. 이를 통해 부모 클래스는 자식 클래스 개체에 대한 포인터나 참조를 가리킬 수 있으므로 개체의 실제 유형에 따라 다양한 메서드를 호출할 수 있습니다.
다형성과 함수 오버로딩을 함께 사용하면 기본 클래스에서 오버로드된 함수를 만들고 파생 클래스에서 이러한 함수 버전을 재정의할 수 있습니다.
샘플 코드:
class Shape { public: virtual double area() = 0; // 纯虚函数 }; class Rectangle : public Shape { public: Rectangle(double length, double width) : _length(length), _width(width) {} double area() override { return _length * _width; } private: double _length, _width; }; class Circle : public Shape { public: Circle(double radius) : _radius(radius) {} double area() override { return 3.14 * _radius * _radius; } private: double _radius; }; int main() { Shape* shapes[] = { new Rectangle(4.5, 3.2), new Circle(2.5) }; for (Shape* shape : shapes) { cout << shape->area() << endl; // 调用正确的 area() 方法 } return 0; }
출력:
14.4 19.625
이 예에서 Shape
기본 클래스는 area()
순수 가상 함수를 선언합니다. 파생 클래스 Rectangle
및 Circle
는 area()
메서드를 재정의하여 면적을 다르게 계산합니다. Shape
基类声明了一个 area()
纯虚函数。派生类 Rectangle
和 Circle
重新定义 area()
方法,以不同的方式计算其面积。
main()
函数创建一个 Shape
指针数组,并将派生类对象存储在其中。循环遍历数组并调用 area()
main()
함수는 Shape
포인터 배열을 생성하고 그 안에 파생 클래스 객체를 저장합니다. 배열을 반복하고 area()
메서드를 호출하여 가리키는 객체의 실제 유형에 따라 적절한 메서드를 호출합니다. 🎜위 내용은 다형성은 C++의 함수 오버로딩과 어떻게 상호 작용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!