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