くだらない質問です。delete は型が分からなくても正しく使えますか?

class C1 { long m1; };
class C2 { long m1, m2, m3, m4, m5, m6, m7, m8; };
void main() {
C2* c2 = new C2;
void* p = c2;
delete p;
}