Предполагая, что SomeClass
имеет общедоступный конструктор по умолчанию, да.
Обратите внимание, что есть разница между
- , имеющим общедоступный конструктор по умолчанию (что я сказал) и
- не имеет публично объявленного конструктора по умолчанию (что вы сказали)
Для следующего класса 2. - true, но 1. не является:
class A {
SomeClass(const SomeClass&) {}
};
Это связано с §12.1 / 5 (C ++ 03):
Если нет объявленный пользователем конструктор для класса X, конструктор по умолчанию объявляется неявно.Неявно объявленный конструктор по умолчанию является членом inline public
своего класса.
С вашим обновлением SomeClass
не имеет конструктора по умолчанию.Вы не объявили один и потому что вы объявили другой конструктор, компилятор также не объявит его неявно.
Если вам нужен один, вы должны реализовать его самостоятельно:
class A {
public:
SomeClass(int) {}
SomeClass() {}
};
Илипусть другой конструктор квалифицируется как конструктор по умолчанию:
class A {
public:
SomeClass(int=0) {}
};