泛型編程通過模板和虛函數在 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 }
登錄后復制