class foo {
public:
int a;
int b;
foo(int a_, int b_) : a(a_), b(b_) {}
};
int main() {
foo f;
}
когда я пытаюсь скомпилировать приведенный выше фрагмент кода, я получаю сообщение об ошибке, как показано ниже:
foo.cc: In function 'int main()'
foo.cc:12: error: no matching function for call to 'main()::foo::foo()'
foo.cc:10: note: candidates are: main()::foo::foo(int, int)
foo.cc:6: note: main()::foo::foo(const main()::foo&)
, но если я закомментирую файл явного конструктора с двумя целочисленными параметрами, то кодбыть скомпилированным.Я полагаю, что за волшебством стоит правило, что когда вы объясняете объявить конструктор с параметрами, компилятор c ++ не будет автоматически генерировать конструктор по умолчанию без параметров для вас.
Я прав?Если я прав, почему c ++ имеет такое поведение?заранее спасибо.