这合法吗?如果是这样,你认为它是一个好的编码实践吗?
我想做这样的事情(不显示不重要的细节):
class ItemStorage {
int size() const;
};
class SpecialStorage : public ItemStorage {
public:
SpecialStorage (...) : ItemStorage(...), items(ItemStorage::size()) {...}
private:
int items;
};
Run Code Online (Sandbox Code Playgroud)
如果方法大小不是虚拟的,我很确定它是可以的.如果它是虚拟的并且派生类不会覆盖它怎么办?
一般规则是,在初始化期间,您不得访问对象的未初始化部分.由于在初始化项目时已经初始化了ItemStorage,因此调用大小确实很好.
即使大小是虚拟的,即使它被覆盖,它仍然会很好:它只会调用基本版本(即虚拟方法只绑定到正在构建的级别).