I have an inheritance chain, where class A publicly inherits from class B, which in turn publicly inherits from class C. The destructor of class C is marked as "virtual". Is there any objection against marking the destructors of class B and A as virtual? Or is there a performance/memory penalty to pay in these situations?