Что приводит вас в замешательство, так это то, что вы можете конкретно указать «какой» конструктор базового класса вы хотите использовать, как в следующем примере. Но вы не можете / не должны указывать деструктор.
TMyObject::TMyObject() : TObject()
Вы можете использовать другой конструктор, скажем TObject (int i)
, написав
TMyObject::TMyObject() : TObject (3)
Объект может быть уничтожен только одним способом, но его можно построить несколькими способами (с помощью разных конструкторов).
Итак, вкратце, вам не нужно упоминать имя деструктора базового класса в деструкторе производного класса. Как только вы уничтожите производный объект (скажем, выполнив delete derivedObj
), он сначала вызовет деструктор производного класса, а затем сам деструктор базового класса.