C++의 함수 오버로드를 사용하면 동일한 클래스에 동일한 이름을 가진 함수를 정의할 수 있지만 매개변수 목록은 다릅니다. 상위 클래스와 이름 및 매개변수가 동일한 함수가 하위 클래스에 정의되고 하위 클래스가 함수는 상위 클래스 함수를 덮어씁니다. 실제 예에서는 오버로드된 함수를 사용하여 다양한 데이터 유형에 대한 덧셈 연산을 수행하고, 오버라이드된 함수를 사용하여 상위 클래스의 가상 함수를 오버라이드하여 다양한 모양의 면적을 계산합니다.
C++ 함수 오버로딩 및 재작성: 심층적인 이해 및 실제 적용
함수 오버로딩
함수 오버로딩을 사용하면 동일한 클래스에서 동일한 함수 이름이지만 다른 매개변수 목록을 사용하여 여러 함수를 정의할 수 있습니다.
class MyClass { public: int add(int a, int b); double add(double a, double b); }; int MyClass::add(int a, int b) { return a + b; } double MyClass::add(double a, double b) { return a + b; }
함수 재정의
함수 재정의는 상위 클래스와 동일한 이름과 동일한 매개변수 목록을 가진 하위 클래스에 함수가 정의될 때 발생합니다. 하위 클래스 함수는 상위 클래스 함수를 재정의합니다.
class ParentClass { public: virtual int display() { return 10; } }; class ChildClass : public ParentClass { public: int display() { // 重写父类的 display() return 20; } };
실용 사례
오버로드된 함수의 예:
#include <iostream> class Calculator { public: int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; } std::string add(std::string a, std::string b) { return a + b; } }; int main() { Calculator calc; std::cout << calc.add(1, 2) << std::endl; // 输出:3 std::cout << calc.add(1.5, 2.5) << std::endl; // 输出:4 std::cout << calc.add("Hello", "World") << std::endl; // 输出:HelloWorld return 0; }
재작성된 함수의 예:
#include <iostream> class Shape { public: virtual double area() = 0; // 纯虚函数(强制子类实现 area()) }; class Rectangle : public Shape { public: Rectangle(double width, double height) : m_width(width), m_height(height) {} double area() override { return m_width * m_height; } private: double m_width; double m_height; }; class Circle : public Shape { public: Circle(double radius) : m_radius(radius) {} double area() override { return 3.14 * m_radius * m_radius; } private: double m_radius; }; int main() { Rectangle rect(5, 10); Circle circle(5); std::cout << "Rectangle area: " << rect.area() << std::endl; // 输出:50 std::cout << "Circle area: " << circle.area() << std::endl; // 输出:78.5 return 0; }
위 내용은 C++ 함수 오버로딩 및 재작성 이해 및 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!