C++ 虛函數表與多態 —— 關鍵字 final 的用法


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 };

 

 

 

 

 

 

 

=========================================================================================================================

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM