Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Template Specialization ใน C++

Template Specialization ช่วยให้เราสร้าง template ทั่วไปสำหรับทุกชนิดข้อมูล แล้วสร้างเวอร์ชันเฉพาะสำหรับชนิดข้อมูลบางชนิดได้

Function Template Specialization

template<typename T>
void my_function(T x) {
    cout << "General: " << x << endl;
}

template<>
void my_function(char x) { // specialization สำหรับ char
    cout << "Specialized for char: " << x << endl;
}

my_function(10);      // General
my_function(25.36);   // General
my_function('F');     // Specialized
my_function("Hello"); // General (const char*)

Class Template Specialization

template<typename T> class MyClass {
public: MyClass() { cout << "General class\n"; }
};

template<> class MyClass<char> { // specialization
public: MyClass() { cout << "Specialized for char\n"; }
};

MyClass<int> a;    // General
MyClass<char> b;  // Specialized

ผลลัพธ์

General: 10
General: 25.36
Specialized for char: F
General: Hello