2015-12-10 114 views
2

當編寫一個virtual析構函數,是有其虛擬〜T(){}和虛擬〜T()=默認值之間的區別;

virtual ~T() = default; 

virtual ~T() {} 

他們似乎都對從type_traits任何我能想到同樣的影響之間的任何功能性或向外明顯的差異用...測試。

+0

[the answer](http://stackoverflow.com/questions/13576055/how-is-default-different-from-for-default-constructor-and-destructor/13576544#13576544) –

回答

2

它們實際上是相同的。雖然與非虛擬析構函數有所不同,但是一旦您將virtual放在那裏,它就不再是微不足道的了。

這不是唯一一次導致生成非平凡的特殊成員函數。例如,如果您有一個具有非平凡析構函數的成員,那麼使用= default不會爲包含類型創建一個簡單的析構函數,即使使用非虛擬析構函數也是如此。

無論如何,你應該使用= default,只是爲了清楚你的意圖是什麼。

相關問題