4
合法吗?如果是这样,你认为这是不错的编码习惯吗?使用基类方法初始化派生类成员
我想要做这样的事情(不必要的细节未显示):
class ItemStorage {
int size() const;
};
class SpecialStorage : public ItemStorage {
public:
SpecialStorage (...) : ItemStorage(...), items(ItemStorage::size()) {...}
private:
int items;
};
我敢肯定,这是确定的,如果该方法大小不虚。如果它是虚拟的并且派生类不覆盖它呢?
+1:我没有注意到ItemStorage的构造函数被首先调用。 – Puppy 2010-12-14 23:08:39
WOW。快速!非常感谢。 – watson1180 2010-12-14 23:11:54
它只会调用基本版本,因为它是明确指定的。否则,正在构建的对象是SpecialStorage,在这种情况下,调用可能不安全(依赖未初始化的成员)。 – UncleBens 2010-12-14 23:35:44