Computer >> Máy Tính >  >> Lập trình >> C ++

Chuyên ngành Mẫu trong C ++

Trong C ++, các mẫu được sử dụng để tạo các hàm và lớp tổng quát. Vì vậy, chúng tôi có thể sử dụng bất kỳ loại dữ liệu nào như int, char, float hoặc một số dữ liệu do người dùng xác định cũng sử dụng các mẫu.

Trong phần này, chúng ta sẽ xem cách sử dụng chuyên môn hóa mẫu. Vì vậy, bây giờ chúng ta có thể xác định một số khuôn mẫu tổng quát cho các loại dữ liệu khác nhau. Và một số chức năng mẫu đặc biệt cho loại dữ liệu đặc biệt. Hãy cho chúng tôi xem một số ví dụ để có ý tưởng tốt hơn.

Mã mẫu

#include<iostream>
using namespace std;
template<typename T>
void my_function(T x) {
   cout << "This is generalized template: The given value is: " << x << endl;
}
template<>
void my_function(char x) {
   cout << "This is specialized template (Only for characters): The given value is: " << x << endl;
}
main() {
   my_function(10);
   my_function(25.36);
   my_function('F');
   my_function("Hello");
}

Đầu ra

This is generalized template: The given value is: 10
This is generalized template: The given value is: 25.36
This is specialized template (Only for characters): The given value is: F
This is generalized template: The given value is: Hello

Chuyên môn hóa mẫu cũng có thể được tạo cho các lớp. Hãy để chúng tôi xem một ví dụ bằng cách tạo lớp tổng quát và lớp chuyên biệt.

Mã mẫu

#include<iostream>
using namespace std;
template<typename T>
class MyClass {
   public:
      MyClass() {
         cout << "This is constructor of generalized class " << endl;
      }
};
template<>
class MyClass <char>{
   public:
      MyClass() {
         cout << "This is constructor of specialized class (Only for characters)" << endl;
      }
};
main() {
   MyClass<int> ob_int;
   MyClass<float> ob_float;
   MyClass<char> ob_char;
   MyClass<string> ob_string;
}

Đầu ra

This is constructor of generalized class
This is constructor of generalized class
This is constructor of specialized class (Only for characters)
This is constructor of generalized class