, если у меня есть конструкторы с параметрами в моем классе, мы должны обеспечить ничегонеделания конструктор как:конструкторы по умолчанию в C++
1)
class A
{
A(){}; //To satisfy the compiler
//some constructors with parameter
};
просто чтобы удовлетворить компилятор.
Теперь, если мой класс имеет параметр по умолчанию, как:
2)
class A
{
//A(){} can't be used expilcilty or implicilty
A(int = 0);
};
A a;
Там будет неоднозначность ли называть A: :() или A :: A (int = 0), поэтому мы не можем предоставить конструктор do-nothing во втором случае. Так верно, что даже неявный конструктор, предоставляемый компилятором, получает в этом случае подтверждение.
Просьба указать некоторые пояснения/мысли.
Обратите внимание, что вам не нужно указывать конструктор zero-arg для «удовлетворения компилятора». –
Программирование никогда не касалось компилятора! –
Вам не обязательно иметь конструктор по умолчанию, чтобы удовлетворить компилятор. У вас должен быть один, если вы собираетесь делать что-то, что требует конструктора по умолчанию, что-то вроде 'A a; 'или' A b [10]; 'или' A * c = new A [10]; '. Нет требования, чтобы класс имел конструктор по умолчанию. –