Motti Motti - 1 month ago 10
C++ Question

What's the point in defaulting functions in C++11?

C++11 adds the ability for telling the compiler to create a default implementation of any of the special member functions. While I can see the value of deleting a function, where's the value of explicitly defaulting a function? Just leave it blank and the compiler will do it anyway.

The only point I can see is that a default constructor is only created when no other constructor exists:

class eg {
public:
eg(int i);
eg() = default;
};


But is that really better than how you do it now?

class eg {
public:
eg(int i);
eg() {}
};


Or am I missing a use-case?

Answer

A defaulted constructor will have a declaration, and that declaration will be subject to the normal access rules. E.g. you can make the default copy constructor protected. Without these new declarations, the default generated members are public.