泛型程式設計透過模板和虛擬函數在 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中文網其他相關文章!