4
합법적입니까? 그렇다면 좋은 코딩 방법이라고 생각하십니까?기본 클래스 메서드를 사용하여 파생 클래스 멤버 초기화
나는 (중요하지 않은 세부 사항이 표시되지 않습니다) 이런 일을하고 싶지 :
class ItemStorage {
int size() const;
};
class SpecialStorage : public ItemStorage {
public:
SpecialStorage (...) : ItemStorage(...), items(ItemStorage::size()) {...}
private:
int items;
};
나는 방법 크기 가상이 아닌 경우가 OK임을 확신합니다. 가상 클래스이고 파생 클래스가이를 덮어 쓰지 않으면 어떻게됩니까?
+1 : ItemStorage의 생성자가 먼저 호출 된 것을 알지 못했습니다. – Puppy
WOW. 빠른! 고마워. – watson1180
명시 적으로 지정 되었기 때문에 기본 버전 만 호출합니다. 그렇지 않으면 생성중인 객체가 SpecialStorage이며,이 경우 호출은 안전하지 않을 수 있습니다 (아직 초기화되지 않은 멤버에 의존). – UncleBens