I know that if a parametrized constructor is provided, the implicit default constructor is not generated.
If we have a constructor taking no parameters and an empty body it can play the role of a default constructor.
class Box {
public:
  Box(int value) : x(value) {}  // parametrized constructor
  Box() {}  // default constructor
private:
  int x;
};
In C++11 we can write = default to specify that we want the implicitly generated default constructor to be present, even if we have already a parametrized constructor.
class Box {
public:
  Box(int value) : x(value) {}  // parametrized constructor
  Box() = default;
private:
  int x;
};
I am wondering, is there a difference between these two syntaxes for specifying a default constructor explicitly? Are they equivalent or not? Is a constructor taking no parameters and no body really a default constructor or is it something else?
I want to ask, can there be a situation in which the constructor taking no parameters and no body have a different behavior than the C++11 = default constructor? Obscure and arcane examples are welcome.
Aucun commentaire:
Enregistrer un commentaire