通常,最好有一个抽象基类来隔离对象的接口。
问题在于,默认情况下,C ++中的副本构造IMHO在很大程度上已被破坏,默认情况下会生成副本构造函数。
那么,当您有一个抽象基类和派生类中的原始指针时,会遇到什么陷阱?
class IAbstract
{
~IAbstract() = 0;
}
class Derived : public IAbstract
{
char *theProblem;
...
}
IAbstract *a1 = new Derived();
IAbstract a2 = *a1;//???
现在,您是否彻底禁用了整个层次结构的副本构建?将副本构造声明为私有IAbstract
?
抽象基类是否有三分法则?