Motti Motti - 1 year ago 65
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 Source

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.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download