条款34:区分接口继承和实现继承
impure virtual 函数的危险
class Airplane {
public:
virtual void fly(const Airport& destination) = 0; // 函数接口
...
protected:
void defaultFly(const Airport& destination); // 缺省实现
};
class ModelA: public Airplane {
public:
virtual void fly(const Airport& destination) { // 明确指明
defaultFly(destination);
}
};
class ModelC: public Airplane {
public:
virtual void fly(const Airport& destination) { // 明确实现
...
}
};Last updated