Jawaban atas pertanyaan Anda sering, tetapi tidak selalu. Jika kelas abstrak Anda melarang klien untuk memanggil delete pada pointer ke sana (atau jika dikatakan demikian dalam dokumentasinya), Anda bebas untuk tidak mendeklarasikan destruktor virtual.
Anda dapat melarang klien untuk memanggil delete pada sebuah pointer ke sana dengan membuat destruktornya terlindungi. Bekerja seperti ini, sangat aman dan masuk akal untuk menghilangkan destruktor virtual.
Anda pada akhirnya akan berakhir dengan tidak ada tabel metode virtual, dan akhirnya menandakan klien Anda niat Anda untuk membuatnya tidak dapat dihapus melalui pointer ke sana, jadi Anda memang punya alasan untuk tidak menyatakannya virtual dalam kasus-kasus tersebut.
[Lihat item 4 dalam artikel ini: http://www.gotw.ca/publications/mill18.htm ]
delete p
memohon perilaku yang tidak terdefinisi. Tidak dijamin untuk meneleponInterface::~Interface
.