> 백엔드 개발 > C++ > 본문

C++ 함수 오버로딩 및 재작성 실제 적용 사례

PHPz
풀어 주다: 2024-04-20 08:42:02
원래의
549명이 탐색했습니다.

C++ 函数重载和重写的实际应用案例

C++ 함수 오버로딩 및 재작성의 실제 적용 사례

함수 오버로딩

함수 오버로딩을 사용하면 동일한 함수 이름을 사용하여 다른 유형이나 개수의 매개변수를 처리하는 다른 구현을 가질 수 있습니다. 예를 들어, 다양한 유형의 데이터를 인쇄하는 함수를 만들 수 있습니다.

void print(int value) {
  cout << value << endl;
}

void print(double value) {
  cout << value << endl;
}

int main() {
  int num = 10;
  double number = 12.5;
  print(num); // 调用 print(int)
  print(number); // 调用 print(double)
  return 0;
}
로그인 후 복사

함수 재정의

함수 재정의를 사용하면 파생 클래스에 정의된 함수가 동일한 이름과 매개변수 유형을 가진 기본 클래스의 함수와 다른 구현을 가질 수 있습니다. . 예를 들어, 면적 계산을 위한 함수를 정의하는 기본 클래스 Shape가 있습니다. Shape,其中定义了一个计算面积的函数:

class Shape {
public:
  virtual double getArea() = 0; // 虚拟函数声明
};
로그인 후 복사

子类 RectangleCircle 覆盖了 getArea 函数并提供了自己的实现:

class Rectangle: public Shape {
public:
  double width, height;
  Rectangle(double width, double height) : width(width), height(height) {}
  double getArea() override {
    return width * height;
  }
};

class Circle: public Shape {
public:
  double radius;
  Circle(double radius) : radius(radius) {}
  double getArea() override {
    return 3.14 * radius * radius;
  }
};
로그인 후 복사

实战案例

考虑以下示例,它使用函数重载和函数重写来创建一个计算形状面积的程序:

#include <iostream>

using namespace std;

// 基类 Shape
class Shape {
public:
  virtual double getArea() = 0;
};

// 子类 Rectangle
class Rectangle: public Shape {
public:
  double width, height;
  Rectangle(double width, double height) : width(width), height(height) {}
  double getArea() override {
    return width * height;
  }
};

// 子类 Circle
class Circle: public Shape {
public:
  double radius;
  Circle(double radius) : radius(radius) {}
  double getArea() override {
    return 3.14 * radius * radius;
  }
};

// 函数重载用来打印不同类型数据的面积
void printArea(Shape *shape) {
  cout << "Area of the Shape: " << shape->getArea() << endl;
}

int main() {
  Rectangle rectangle(5, 10);
  Circle circle(2);
  printArea(&rectangle);
  printArea(&circle);
  return 0;
}
로그인 후 복사

在这个案例中,Shape 类定义了一个虚拟的 getArea 函数,由子类 RectangleCircle 覆盖。printArea 函数使用函数重载来处理不同类型的 Shaperrreee

하위 클래스 RectangleCircle는 를 재정의합니다. getArea 함수를 사용하고 자체 구현을 제공합니다. 🎜rrreee🎜🎜실용적인 예🎜🎜🎜함수 오버로딩과 함수 재작성을 사용하여 모양의 면적을 계산하는 프로그램을 만드는 다음 예를 고려하세요. 🎜rrreee 🎜이 경우 Shape 클래스는 하위 클래스 RectangleCircle에 의해 재정의되는 가상 <code>getArea 함수를 정의합니다. 코드>. printArea 함수는 함수 오버로드를 사용하여 다양한 유형의 Shape 개체를 처리하고 해당 영역을 인쇄합니다. 🎜

위 내용은 C++ 함수 오버로딩 및 재작성 실제 적용 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿