将内容添加到父类的 Update 方法中

Add things to the Update method of parent class

本文关键字:Update 方法 父类 添加      更新时间:2023-10-16

我有两个类:

class Object {
public: void Update();
};
class Cube : public Object {
void Update();
};

我想要一个 Update() 方法,它执行我告诉它的所有操作,然后执行父类的 Update 所做的所有操作。我能做到吗?

也许你想稍微改变一下你的设计。像这样的事情可以做你想做的事:

class Object {
public: 
    void Update(
        // invoke method from derived
        onUpdate();
        // do stuff in base
    );
protected:
    virtual void onUpdate() = 0;
};
class Cube : public Object {
    void onUpdate() {
        // do stuff in derived
    }
};
你可以

简单地在Cube的update函数中编写Object::update(),但重新定义继承的非虚函数通常被认为是不好的做法,所以我建议你也update虚拟的。

class Object {
  public:
    virtual void update(){ /* ... */ }
};
class Cube : public Object {
  public:
    void update() override {
        // ...
        Object::update(); 
    }
};