Дано:
class BaseClass
{
public:
BaseClass();
BaseClass(const BaseClass&);
};
class DerivedClass : public BaseClass
{
public:
DerivedClass(const DerivedClass&);
};
Этот конструктор копирования:
DerivedClass::DerivedClass(const DerivedClass& obj)
// warning: no BaseClass initializer!
{
}
Действительно означает то же самое, что и:
DerivedClass::DerivedClass(const DerivedClass& obj)
// Default construct the base:
: BaseClass()
{
}
Вы можете добавить конструктор по умолчаниюинициализатор, как указано выше, если это действительно то, что вы имеете в виду, и предупреждение исчезнет.Но компилятор предлагает вам вместо этого:
DerivedClass::DerivedClass(const DerivedClass& obj)
// Copy construct the base:
: BaseClass(obj)
{
}