在C++中,模板特化是一種技術(shù),它允許你為特定的模板參數(shù)提供特定的實(shí)現(xiàn)。這可以避免代碼重復(fù),因?yàn)樗试S你為不同的類型提供不同的行為。以下是一些避免代碼重復(fù)的策略:
template <typename T>
class MyClass {
public:
void commonMethod() {
// 通用實(shí)現(xiàn)
}
};
// 部分特化
template <>
class MyClass<int> {
public:
void commonMethod() {
// 針對(duì)int的特定實(shí)現(xiàn)
}
};
template <typename T>
class MyClass {
public:
void commonMethod() {
// 通用實(shí)現(xiàn)
}
};
// 完全特化
template <>
class MyClass<std::string> {
public:
void commonMethod() {
// 針對(duì)std::string的特定實(shí)現(xiàn)
}
};
template <typename T, typename U>
class MyClass {
public:
void commonMethod() {
// 通用實(shí)現(xiàn)
}
};
// 偏特化
template <typename U>
class MyClass<void, U> {
public:
void commonMethod() {
// 針對(duì)U的特定實(shí)現(xiàn)
}
};
#include <type_traits>
template <typename T, typename std::enable_if<std::is_integral<T>::value, int>::type = 0>
void myMethod(T t) {
// 針對(duì)整數(shù)的實(shí)現(xiàn)
}
template <typename T, typename std::enable_if<std::is_floating_point<T>::value, int>::type = 0>
void myMethod(T t) {
// 針對(duì)浮點(diǎn)數(shù)的實(shí)現(xiàn)
}
通過這些策略,你可以有效地避免模板代碼重復(fù),同時(shí)保持代碼的清晰和可維護(hù)性。