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
是什么代码>执行?表示该方法为“纯虚拟”。向类中添加纯虚拟方法使其成为抽象类,这意味着它无法实例化。例如,看看这里:如果没有什么不清楚的地方,请再次接受答案。