If your class has a virtual destructor it is probably polymorphic (alternatively, if it is not polymorphic, don't give it a virtual destructor).
If your class is polymorphic, you probably don't want it to have a copy constructor, as the copy probably isn't going to copy the polymorphic (ie most-derived) parts.
Now, some people believe (and teach) that all classes should have virtual destructors, in case someone wants to later derive from them.
Those people are wrong. Classes should be designed for polymorphism (or not); it is not a post-class decision.
You should (typically) only have a virtual destructor if you have other virtual functions, which you have because you want polymorphism.
(What the standard _should_ do (but would break code and/or ABI somewhere) is to give you a virtual destructor automatically when you have virtual functions.)
So, I don't understand why you want virtual destructor AND rule of zero together.
Tony