静态对象池和构造函数的继承
Inheritance of static object pools and constructors?
我正在开发一个游戏/模拟,并处理管理游戏中的所有生物。有一个基类生物,不同种类的生物从中继承。
在这段代码的早期版本中,我只是将基类单独用作任何给定生物的泛型,我有一个私有静态向量,如果你愿意的话,它会保存一个电话簿,包括游戏中存在的所有生物。这是由生物的构造函数处理的,将新生物的地址添加到堆栈中。足够简单。
我得到心理障碍的地方是当我引入继承时。如果我继续将 Creature 类改编为基类(将向量移动到我想象的受保护状态?),并从那里定义一些任意的猴子类、熊和老虎......当我创建从 Creature 继承的类的实例时,它也会添加到 Creature 父类的指针向量中吗?也许更直接的是,创建其中一个子类的实例是否也会调用父类的构造函数?
我是否在正确的思路上,或者我必须做些什么来实现这种行为?如果需要,我可以提供更具体的细节。
谢谢。
--
我以这种方式做事的想法,例如图形。这样,我可以循环浏览所有存在的生物,并通过多态性调用每个返回其精灵、X Y 位置等的生物的函数。
这绝对有效,只要您的向量存储指针Creature*
而不是Creature
在您的std::vector
内。否则会发生对象切片,因为向量只为 Creature 保留空间,并且子类的每个附加特征都被丢弃
关于构造函数调用堆栈,它相当简单:
class A {
private:
int aField;
public:
A(int aField) : aField(aField) { }
};
class B : public A {
private:
int bField;
public:
B(int aField, int bField) : A(aField), bField(bField) { }
};
相关文章:
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- C++继承:构造函数中的字符串构造
- 继承构造函数和其他变量的解决方法
- 带有此指针的模板类多重继承构造函数不起作用?
- 虚拟继承构造函数的组装
- C++继承构造函数的可见性
- 继承构造函数(ISO 2011 SEC 12.9第7段)
- 没有C 11的继承构造函数
- 使用关键字继承构造函数时出乎意料的行为
- 继承构造函数不允许类似数组的初始化
- 从基于QObject的类继承构造函数
- 继承构造函数并提供新的重载:无参数基构造函数似乎不参与重载解析
- C++多继承构造函数
- 具有独占继承构造函数的类的值初始化
- C++ 继承构造函数重写
- 继承构造函数与转发
- 默认情况下继承构造函数 noexcept(true)
- 有没有办法在继承构造函数时访问初始值设定项列表
- 从 std::function 继承构造函数时"function returning a function"