c++ - Is there any diffrence between {} or default in initializing constructor -


is there difference (no matter how tiny is) between 3 methods of defaulting constructor of class:

directly in header using {}:

//foo.h class foo{ public:     foo(){} } 

directly in header using default keyword:

//foo.h class foo{ public:    foo()=default; } 

in cpp using {}

//foo.h class foo{ public:    foo(); }  //foo.cpp #include "foo.h" foo::foo(){} 

yes, there difference.

option 1 , 3 user-provided. user-provided constructor non-trivial, making class non-trivial. has few effects on how class can handled. no longer trivially copyable, cannot copied using memcpy , like. not aggregate, cannot initialized using aggregate-initialization

a fourth option following:

//foo.h class foo{ public:    foo(); }  //foo.cpp #include "foo.h" foo::foo()=default; 

although may seem analogous second example, user-provided well.

functionally, defaulted constructor same thing foo(){}, specified in [class.ctor]/6.


Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -