final 字面上最終、最后、不可改變的意思,final 這個關鍵字在 Jave PHP C++中都有用到,其作用也基本一致。
C++中的 final 是C++11新增,他可以用來修飾類,讓類無法被繼承;或用來修飾類的虛函數,讓虛函數在子類中不能被重寫。
final 只能修飾 類 與 虛函數,無法修飾普通成員函數。
一、 在類的繼承關系中 final 的用法,讓類無法被繼承:
1 #include <iostream> 2 3 using namespace std; 4 5 class Class_1 final //可以再一開始就修飾 final 6 { 7 8 }; 9 10 class Class_2 final :public Class_1 //報錯:不能將 final 類用作基類 11 { 12 13 }; 14 15 class Class_3 :public Class_2 //報錯:不能將 final 類用作基類 16 { 17 18 };
二、 虛函數禁止重寫的 final 的方法,讓虛函數在子類中不能被重寫:
這種情況,可以繼承,可以使用,只是不能夠重寫。
1 #include <iostream> 2 3 using namespace std; 4 5 class Class_1 6 { 7 virtual void func() final {} //虛函數 final 修飾 8 9 }; 10 11 class Class_2 :public Class_1 12 { 13 void func(); //報錯:C++ 無法重寫“final”函數 (已聲明 所在行數:7) 14 };
=========================================================================================================================