首頁 >後端開發 >C++ >C++ 函式重載與重寫中泛型程式設計的應用

C++ 函式重載與重寫中泛型程式設計的應用

WBOY
WBOY原創
2024-04-21 11:54:01484瀏覽

泛型程式設計透過模板和虛擬函數在 C 中實現。函數重載使用模板接受任何類型。函數重寫使用虛模板函數提供衍生類別自己的實作。實戰案例包括使用泛型函數重載尋找元素和使用泛型函數重寫列印容器元素。

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

C 函數重載與重寫中泛型程式的應用

泛型程式設計是指編寫獨立於資料類型的程式碼,從而簡化和重複使用程式碼。在 C 中,我們可以透過使用模板和 virtual 函數來實現泛型程式設計。

函數重載允許使用相同名稱建立具有不同參數類型的多個函數。透過使用模板,我們可以讓函數重載接受任何類型的參數:

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

函數重寫允許衍生類別提供父類別虛擬函數的自己的實作。我們可以透過使用虛擬模板函數來實現泛型重寫:

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;
  }
};

實戰案例

使用泛型函數重載來尋找元素

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
}

使用泛型函數重寫列印容器元素

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
}

以上是C++ 函式重載與重寫中泛型程式設計的應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn