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

mẫu is_final trong C ++

Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và các ví dụ của mẫu std ::is_final trong C ++ STL.

is_final là một mẫu nằm trong tệp tiêu đề . Mẫu này được sử dụng để kiểm tra xem kiểu T đã cho có phải là lớp cuối cùng hay không.

Lớp cuối cùng trong C ++ là gì?

Khi chúng ta khai báo một lớp với mã định nghĩa cuối cùng thì nó được gọi là Lớp cuối cùng. Lớp cuối cùng là một loại lớp đặc biệt không thể mở rộng để tạo lớp khác. Trong C ++, để tạo một lớp làm lớp cuối cùng, chúng ta tạo một lớp như một người bạn và sau đó hầu như kế thừa lớp đó, để làm cho lớp đó không thể bị hủy diệt.

Ví dụ về lớp cuối cùng

class final_abc; //Class which is to be made final
class abc {
   private:
   abc(){cout<<"abc constructor";}
   friend class final_abc;
};
class final_abc : virtual abc //made it final class. {
   public:
   final_abc(){cout<<"Final class constructor";}
};
class derive : public final_abc; //Error can't be extended

Cú pháp

template <class T> is_final;

Tham số

Mẫu chỉ có thể có tham số kiểu T và kiểm tra xem kiểu đã cho có phải là kiểu lớp cuối cùng hay không.

Giá trị trả về

Nó trả về một giá trị Boolean, true nếu kiểu đã cho là lớp cuối cùng và false nếu kiểu đã cho không phải là lớp cuối cùng.

Ví dụ

Input: class final_abc;
   class abc { friend class final_abc; };
   class final_abc : virtual abc{ };
   is_final<abc>::value;
Output: False

Input: class final_abc;
   class abc
   { friend class final_abc; };
   class final_abc : virtual abc{ };
   is_final<final_abc>::value;
Output: True

Ví dụ

#include <iostream>
#include <type_traits>
using namespace std;
class TP {
   //Same if it will be a structure instead of a class
};
class T_P final {
   //Same if it will be a structure instead of a class
};
int main() {
   cout << boolalpha;
   cout << "Using is_final";
   cout << "\nTutorials Point: "<<is_final<TP>::value;
   cout << "\nT_P Final: "<<is_final<T_P>::value;
   cout << "\ncheck for char: "<<is_final<int>::value;
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Using is_final
Tutorials Point: false
T_P Final: true
check for char: false

Ví dụ

#include <iostream>
#include <type_traits>
using namespace std;
union TP {
   //Union
};
union T_P final {
   //Union
};
int main() {
   cout << boolalpha;
   cout << "Using is_final";
   cout << "\nTutorials Point: "<<is_final<TP>::value;
   cout << "\nT_P Final: "<<is_final<T_P>::value;
   cout << "\ncheck for char: "<<is_final<int>::value;
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Using is_final
Tutorials Point: false
T_P Final: true
check for char: false