C++:final關鍵字的作用

派生類重寫父類的虛函數,是C++中多態的體現。而final關鍵字爲我們提供了一種控制手段,用來阻止子類重寫自身的虛函數。

這種控制手段一般用於派生類,用來阻止更多的下級子派生類來重寫虛函數。如果在基類(最頂級的父類)中使用的話,此虛函數就不會有在任何派生類中被重寫。當然,也就失去了成爲虛函數的意義。

class a
{
	virtual void fun() = 0;
};

class b :public a
{
	void fun() final; 
};

class c:public b
{
	void fun(); // 報錯,無法重寫父類的虛函數
};

final通常只在繼承關係的“中途”終止派生類的重載中有意義。從接口派生的角度而言,final可以在派生過程中任意地阻止一個接口的可重寫性,這就給面向對象帶來了更大的控制力。

參考《深入理解C++11: C++11新特性解析與應用》

謝謝閱讀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章