J'essaie de créer une classe très basique avec un constructeur par défaut :
class Point {
public:
Point() = default;//con 1
explicit Point(double x): x_axis(x), y_axis(0){}//con 2
Point(const Point &other) = default;
~Point() = default;
private:
double x_axis;
double y_axis;
}
Lorsque j'essaie d'utiliser le constructeur par défaut de l'application main()
génère une valeur aléatoire pour la fonction x_axis
:
Point p1;//generates random value
Point p2{};//works as intended
Pourquoi ? Lorsque j'utilise l'autre constructeur (con 2) comme ceci :
explicit Point(double x = 0): x_axis(x), y_axis(0){}
Les deux fonctionnent comme prévu.
- pourquoi, au premier essai sans parenthèses, génère-t-il une valeur aléatoire, alors que
{}
a fonctionné, mais au deuxième essai, les deux fonctionnent ? - ce qui est d'appeler le constructeur par défaut avec
{}
?