摘自 清华大学C++程序设计mooc ——多态实例:几何形体程序
原因:因为若构造函数允许多态,则在调用派生类构造函数时,会先调用基类构造函数,若基类构造函数中调用了派生类的多态方法(多态是由基类指针或引用调用基类或派生类的虚函数),而此时派生类对象还没有初始化完成,在没有初始化完成的情况下调用类方法显然是不符合常理的
若析构函数允许多态,则在派生类析构函数调用后,会调用基类析构函数,若基类析构函数调用了派生类多态方法,而此时派生类对象已经析构,在对象已析构的情况下调用析构函数会出错。
摘自 清华大学C++程序设计mooc ——多态实例:几何形体程序
原因:因为若构造函数允许多态,则在调用派生类构造函数时,会先调用基类构造函数,若基类构造函数中调用了派生类的多态方法(多态是由基类指针或引用调用基类或派生类的虚函数),而此时派生类对象还没有初始化完成,在没有初始化完成的情况下调用类方法显然是不符合常理的
若析构函数允许多态,则在派生类析构函数调用后,会调用基类析构函数,若基类析构函数调用了派生类多态方法,而此时派生类对象已经析构,在对象已析构的情况下调用析构函数会出错。