Heim > Backend-Entwicklung > C++ > Hauptteil

Anwendung der generischen Programmierung beim Überladen und Umschreiben von C++-Funktionen

WBOY
Freigeben: 2024-04-21 11:54:01
Original
464 Leute haben es durchsucht

泛型编程通过模板和虚函数在 C++ 中实现。函数重载使用模板接受任何类型。函数重写使用虚模板函数提供派生类自己的实现。实战案例包括使用泛型函数重载查找元素和使用泛型函数重写打印容器元素。

C++ 函数重载和重写中泛型编程的应用

C++ 函数重载和重写中泛型编程的应用

泛型编程是指编写独立于数据类型的代码,从而简化和重用代码。在 C++ 中,我们可以通过使用模板和 virtual 函数来实现泛型编程。

函数重载允许使用相同名称创建具有不同参数类型的多个函数。通过使用模板,我们可以让函数重载接受任何类型的参数:

template <typename T>
void swap(T& a, T& b) {
  T temp = a;
  a = b;
  b = temp;
}
Nach dem Login kopieren

函数重写允许派生类提供父类虚函数的自己的实现。我们可以通过使用虚模板函数来实现泛型重写:

class Base {
public:
  virtual void print() {
    std::cout << "Base class" << std::endl;
  }
};

class Derived : public Base {
public:
  virtual void print() override {
    std::cout << "Derived class" << std::endl;
  }
};
Nach dem Login kopieren

实战案例

使用泛型函数重载查找元素

template <typename T>
bool find(std::vector<T>& vec, T value) {
  for (const auto& element : vec) {
    if (element == value) {
      return true;
    }
  }
  return false;
}

int main() {
  std::vector<int> int_vec = {1, 2, 3};
  std::cout << std::boolalpha << find(int_vec, 2) << std::endl; // true

  std::vector<std::string> str_vec = {"Hello", "World"};
  std::cout << std::boolalpha << find(str_vec, "World") << std::endl; // true
}
Nach dem Login kopieren

使用泛型函数重写打印容器元素

template <typename T>
void print_container(std::vector<T>& vec) {
  for (const auto& element : vec) {
    std::cout << element << " ";
  }
  std::cout << std::endl;
}

int main() {
  std::vector<int> int_vec = {1, 2, 3};
  print_container(int_vec); // 输出: 1 2 3

  std::vector<std::string> str_vec = {"Hello", "World"};
  print_container(str_vec); // 输出: Hello World
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAnwendung der generischen Programmierung beim Überladen und Umschreiben von C++-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage