함수 오버로딩 및 다시 작성 소개 C++에서 함수 오버로딩 및 다시 작성을 사용하면 동일한 이름의 함수가 다른 매개변수 목록을 가지거나 기본 클래스에서 동일한 이름의 함수를 재정의하여 중요한 원칙에 따라 보다 유연하고 확장 가능한 코드를 얻을 수 있습니다. SRP, LSP, DIP 등).
C++ 함수 오버로딩, 재작성 및 클래스 계층 구조 설계 원칙
소개
C++의 함수 오버로딩 및 재작성은 클래스 기반 프로그램을 이해하고 설계하는 데 필수적인 두 가지 기본 개념입니다. 함수 오버로딩을 사용하면 동일한 이름의 함수가 다른 매개변수 목록을 가질 수 있으며, 함수 재정의를 통해 파생 클래스의 함수가 기본 클래스의 동일한 이름의 함수를 재정의할 수 있습니다. 이러한 개념은 유연하고 확장 가능한 코드 기반을 만드는 데 중요합니다.
함수 오버로딩
함수 오버로딩을 사용하면 이름은 같지만 다른 매개변수 목록을 허용하는 함수를 생성할 수 있습니다. 이는 다양한 유형과 양의 입력을 처리하는 데 유용합니다. 예를 들어 다음 함수를 생성하여 두 개의 int
또는 두 개의 double
을 추가할 수 있습니다. int
或两个 double
:
int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; }
当编译器看到 add
函数调用时,它将匹配最合适的重载版本。
函数重写
函数重写允许派生类中的函数覆盖基类中的同名函数。这用于在子类中修改或扩展基类行为。例如,以下基类和派生类重新定义了 print
函数:
class Base { public: void print() { cout << "Base" << endl; } }; class Derived : public Base { public: void print() { cout << "Derived" << endl; } };
当调用派生类中的 print
函数时,它将覆盖基类中的同名函数,从而打印 "Derived"
。
类层次结构设计原则
在设计类层次结构时,以下原则非常重要:
函数重载和重写对于遵循这些原则至关重要。
实战案例
考虑一个图形应用程序,它需要处理不同形状的对象。可以使用基类 Shape
来表示所有形状,并使用派生类(如 Rectangle
和 Circle
class Shape { public: virtual double area() = 0; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : width(width), height(height) {} virtual double area() override { return width * height; } private: double width, height; }; class Circle : public Shape { public: Circle(double radius) : radius(radius) {} virtual double area() override { return 3.14 * radius * radius; } private: double radius; };
add
함수 호출을 확인하면, 가장 적합한 오버로드 버전과 일치합니다.
함수 재정의
함수 재정의를 사용하면 파생 클래스의 함수가 기본 클래스의 동일한 이름의 함수를 재정의할 수 있습니다. 이는 하위 클래스의 기본 클래스 동작을 수정하거나 확장하는 데 사용됩니다. 예를 들어, 다음 기본 클래스와 파생 클래스는print
함수를 재정의합니다. rrreee
파생 클래스의print
함수가 호출되면 동일한 함수를 재정의합니다. 이름을 기본 클래스에 추가하여 "Derived"
를 인쇄합니다. 🎜🎜🎜클래스 계층 구조 디자인 원칙🎜🎜🎜클래스 계층 구조를 디자인할 때 다음 원칙이 매우 중요합니다: 🎜Shape
를 사용하여 모든 모양을 나타내고 Rectangle
및 Circle
과 같은 파생 클래스를 사용하여 특정 모양을 나타낼 수 있습니다. 🎜rrreee🎜 함수 재작성을 사용하여 다양한 모양의 면적을 쉽게 계산하세요. SRP 원칙에 따라 각 클래스는 구체적인 책임을 정의합니다. 🎜🎜🎜결론🎜🎜🎜함수 오버로드 및 재작성은 C++의 강력한 개념이며 유연하고 확장 가능한 코드를 설계하는 데 중요합니다. 클래스 계층 구조 설계 원칙을 따르면 강력하고 유지 관리가 가능한 소프트웨어를 만들 수 있습니다. 🎜위 내용은 C++ 함수 오버로딩과 재작성, 클래스 계층 구조의 설계 원칙의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!