POO C++. Pourquoi mon constructeur refuse de s'exécuter sans paramètre ?
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:
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:
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 ?