2
當編寫一個virtual
析構函數,是有其虛擬〜T(){}和虛擬〜T()=默認值之間的區別;
virtual ~T() = default;
在
virtual ~T() {}
他們似乎都對從type_traits
任何我能想到同樣的影響之間的任何功能性或向外明顯的差異用...測試。
當編寫一個virtual
析構函數,是有其虛擬〜T(){}和虛擬〜T()=默認值之間的區別;
virtual ~T() = default;
在
virtual ~T() {}
他們似乎都對從type_traits
任何我能想到同樣的影響之間的任何功能性或向外明顯的差異用...測試。
它們實際上是相同的。雖然與非虛擬析構函數有所不同,但是一旦您將virtual
放在那裏,它就不再是微不足道的了。
這不是唯一一次導致生成非平凡的特殊成員函數。例如,如果您有一個具有非平凡析構函數的成員,那麼使用= default
不會爲包含類型創建一個簡單的析構函數,即使使用非虛擬析構函數也是如此。
無論如何,你應該使用= default
,只是爲了清楚你的意圖是什麼。
[the answer](http://stackoverflow.com/questions/13576055/how-is-default-different-from-for-default-constructor-and-destructor/13576544#13576544) –