How do I find out what exactly my classes’ default constructors, destructors, and copy/move constructors/assignment operators do?
I know about the rule of 0/3/5, and am wondering what the compiler is doing for me.
If it matters, I’m interested in >=C++17.
>Solution :
The implicitly-defined copy constructor
… performs full member-wise copy of the object’s bases and non-static members, in their initialization order, using direct initialization…
For a simple structure:
struct A
{
int x;
std::string y;
double z;
};
The copy-constructor would be equivalent to:
A::A(A const& otherA)
: x(otherA.x), y(otherA.y), z(otherA.z)
{
}