>  기사  >  백엔드 개발  >  함수 재작성 및 템플릿 프로그래밍: 코드 확장 및 코드 일반화의 마법 같은 사용법 공개

함수 재작성 및 템플릿 프로그래밍: 코드 확장 및 코드 일반화의 마법 같은 사용법 공개

王林
王林원래의
2024-05-05 11:00:01964검색

함수 재작성 및 템플릿 프로그래밍은 코드 확장 및 일반화를 달성하기 위한 C++의 강력한 기술입니다. 함수 재정의를 사용하면 파생 클래스의 기본 클래스 메서드를 재정의하여 확장이 가능합니다. 템플릿 프로그래밍을 사용하면 다양한 유형에서 사용할 수 있는 일반 코드를 생성하여 일반화가 가능합니다. 실제 예에서는 함수 재작성 및 템플릿 프로그래밍을 사용하여 모양의 면적을 계산하는 방법을 보여주며, 코드 확장 및 일반화에서 두 기술의 유용성을 보여줍니다.

함수 재작성 및 템플릿 프로그래밍: 코드 확장 및 코드 일반화의 마법 같은 사용법 공개

함수 재작성 및 템플릿 프로그래밍: 코드 확장 및 코드 일반화의 힘 공개

함수 재작성 및 템플릿 프로그래밍은 개발자가 확장 가능하고 다양한 코드를 만들 수 있는 C++ 프로그래밍의 강력한 기술입니다.

함수 재정의

함수 재정의를 사용하면 파생 클래스에 기본 클래스 메서드의 대체 구현을 제공할 수 있어 코드 확장이 가능해집니다. 구문은 다음과 같습니다.

class Derived : public Base {
public:
  // 重写基类方法
  override double calculate() {
    // 自定义实现
    ...
  }
};

템플릿 프로그래밍

템플릿 프로그래밍을 사용하면 다양한 유형에 사용할 수 있는 일반 코드를 생성할 수 있습니다. 구문은 다음과 같습니다:

template<typename T>
class MyClass {
  T data;
  ...
};

실제 예

다양한 모양의 면적을 계산하는 프로그램을 고려해보세요.

// 使用基类和函数重写
class Shape {
public:
  virtual double calculateArea() = 0;
};

class Square : public Shape { // 使用函数重写扩展基类
public:
  double side;
  Square(double side) : side(side) {}
  double calculateArea() override { return side * side; }
};

class Circle : public Shape { // 再次使用函数重写扩展基类
public:
  double radius;
  Circle(double radius) : radius(radius) {}
  double calculateArea() override { return 3.14 * radius * radius; }
};

int main() {
  Square s(5);
  Circle c(10);
  cout << "Square area: " << s.calculateArea() << endl;
  cout << "Circle area: " << c.calculateArea() << endl;
}
// 使用模板编程
template<typename T>
class Shape {
  T side;
public:
  Shape(T side) : side(side) {}
  T calculateArea() { return side * side; } // 通用实现
};

// 使用模板实例化创建特定形状
class Square : public Shape<double> {};
class Circle : public Shape<double> {};

int main() {
  Square s(5);
  Circle c(10);
  cout << "Square area: " << s.calculateArea() << endl;
  cout << "Circle area: " << c.calculateArea() << endl;
}

위 내용은 함수 재작성 및 템플릿 프로그래밍: 코드 확장 및 코드 일반화의 마법 같은 사용법 공개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.