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 đề
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