Bonjour

Je fais mes premiers pas en POO C++ et j'essaie de faire des petits exercices.
J'ai le code suivant dont le constructeur refuse de s'exécuter si je ne donne aucun paramètre au moment de l'instanciation de mon objet c1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<iostream>
using namespace std;
class calculator {
   int _number1;
   int _number2;
   char _symbol;
   public :
   void add() {
      cout<<"The sum is "<<_number1 + _number2 << endl ;
   }
   void subtract() {
      cout<<"The subtraction is "<<_number1 - _number2 << endl ;
   }
   void multiply() {
      cout<<"The multiplication is "<<_number1 * _number2 << endl ;
   }
   void divide() {
      cout<<"The division is "<<_number1 / _number2 << endl ;
   }
   calculator () {
    cout << "Entrée dans calculator's constructor " << endl;
    int a;
      int b;
      char sym;
      cout << "Entrez 1er nombre : " << endl;
      cin >> a;
      cout << "Entrez second nombre : " << endl;
      cin >> b;
 
      cout << "Quelle opération voulez vous faire ? +, -, *, / ? " << endl;
      cin >> sym;
      _number1 = a;
      _number2 = b;
      _symbol = sym;
      switch(_symbol){
         case '+' : add();
            break;
         case '-' : subtract();
            break;
         case '*' : multiply();
            break;
         case '/' : divide();
            break;
         default : cout<< "Wrong operator" << endl;
      }
     cout << "\n\nSortie de calculator's constructor " << endl;
 
   }
};
int main() {
   cout << "Entrée dans main " << endl;
 
   calculator c1();
   cout << "Après instanciation de c1 " << endl;
 
}

Par contre, si je modifie le code de manière à ce que mon constructeur ai besoin d'un paramètre, il s'exécute correctement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<iostream>
using namespace std;
class calculator {
   int _number1;
   int _number2;
   char _symbol;
   public :
   void add() {
      cout<<"The sum is "<<_number1 + _number2 << endl ;
   }
   void subtract() {
      cout<<"The subtraction is "<<_number1 - _number2 << endl ;
   }
   void multiply() {
      cout<<"The multiplication is "<<_number1 * _number2 << endl ;
   }
   void divide() {
      cout<<"The division is "<<_number1 / _number2 << endl ;
   }
   calculator () {
    cout << "Entrée dans calculator's constructor " << endl;
    int a;
      int b;
      char sym;
      cout << "Entrez 1er nombre : " << endl;
      cin >> a;
      cout << "Entrez second nombre : " << endl;
      cin >> b;
 
      cout << "Quelle opération voulez vous faire ? +, -, *, / ? " << endl;
      cin >> sym;
      _number1 = a;
      _number2 = b;
      _symbol = sym;
      switch(_symbol){
         case '+' : add();
            break;
         case '-' : subtract();
            break;
         case '*' : multiply();
            break;
         case '/' : divide();
            break;
         default : cout<< "Wrong operator" << endl;
      }
     cout << "\n\nSortie de calculator's constructor " << endl;
 
   }
};
int main() {
   cout << "Entrée dans main " << endl;
 
   calculator c1();
   cout << "Après instanciation de c1 " << endl;
 
}
Je ne vois pas pourquoi j'ai absolument besoin d'un paramètre au minimum ?