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