C++ 模板特化(Template Specialization)主要用于為特定類型提供特定的實現(xiàn),而不是用于多態(tài)編程。多態(tài)編程通常使用虛函數(shù)(Virtual Functions)和繼承(Inheritance)來實現(xiàn)。
然而,在某些情況下,模板特化可以間接地支持多態(tài)編程。例如,你可以使用模板特化來為不同的類型提供不同的行為,從而實現(xiàn)類似于多態(tài)的效果。這里有一個簡單的例子:
#include <iostream>
// 通用模板定義
template <typename T>
void process(T value) {
std::cout << "通用處理: " << value << std::endl;
}
// 特化版本,用于處理整數(shù)類型
template <>
void process<int>(int value) {
std::cout << "整數(shù)處理: " << value * 2 << std::endl;
}
// 特化版本,用于處理浮點類型
template <>
void process<float>(float value) {
std::cout << "浮點數(shù)處理: " << value * 3 << std::endl;
}
int main() {
process(42); // 輸出 "整數(shù)處理: 84"
process(3.14f); // 輸出 "浮點數(shù)處理: 9.42"
process("hello"); // 輸出 "通用處理: hello"
return 0;
}
在這個例子中,我們?yōu)?process
函數(shù)提供了兩個特化版本,分別用于處理整數(shù)和浮點類型。雖然這不是典型的多態(tài)編程,但它展示了如何使用模板特化為不同類型的值提供不同的行為。