我想约束Derived Class必须有一个默认构造函数。 我目前正在以一种变态的方式思考它
template <typename Derived>
class Base{
public:
Base(){
}
virtual ~Base(){
new Derived;
}
};
另一个想法是保持一个没有参数的纯虚拟create()方法。
但还有其他方法吗?除了这两个。 我在用C ++方式思考它。但有没有办法在PHP中做到这一点(我希望negetive answers LOL)
答案 0 :(得分:1)
是的,PHP LOL中有一种方法:
abstract class Base {
public final function __construct() {
$this->constructImpl();
}
abstract protected function constructImpl();
}
class Derived extends Base {
protected function constructImpl() {
/* implementation here */
}
}
基本上,你只需要将构造函数标记为final。