Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 向父类的更新方法添加内容_C++_Class_Parent Child - Fatal编程技术网

C++ 向父类的更新方法添加内容

C++ 向父类的更新方法添加内容,c++,class,parent-child,C++,Class,Parent Child,我有两门课: class Object { public: void Update(); }; class Cube : public Object { void Update(); }; 我需要一个Update()方法,该方法执行我告诉它的所有操作,然后执行父类的所有更新操作。我可以这样做吗?也许你想改变一下你的设计。 像这样的东西可以做你想做的事: class Object { public: void Update( // invoke method from

我有两门课:

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

class Cube : public Object {
void 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
    }
};

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

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
    }
};

您只需在多维数据集的更新函数中编写
Object::update()
,但通常认为重新定义继承的非虚拟函数是不好的做法,因此我建议您也将
update
设为虚拟函数

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

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

您只需在多维数据集的更新函数中编写
Object::update()
,但通常认为重新定义继承的非虚拟函数是不好的做法,因此我建议您也将
update
设为虚拟函数

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

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

是的,您可以使用作用域操作符
。在多维数据集的Update()调用
对象::Update()中调用父类中的函数是,您可以使用作用域操作符调用父类中的函数
。在多维数据集的Update()调用
对象::Update()
虚拟void onUpdate()中的
=0
是什么意思执行?表示该方法为“纯虚拟”。向类中添加纯虚拟方法使其成为抽象类,这意味着它无法实例化。看看这里,例如:如果没有什么不清楚的地方,请再次接受答案。
virtualvoid onUpdate()=0中的
=0
是什么执行?表示该方法为“纯虚拟”。向类中添加纯虚拟方法使其成为抽象类,这意味着它无法实例化。例如,看看这里:如果没有什么不清楚的地方,请再次接受答案。