c++ - What happens when you define an empty default constructor? -


i have searched previous questions, , have not found satisfying answer question:

if define empty default constructor class, example

class my_class{ public:     myclass(){} private:     int a;     int* b;     std::vector<int> c; } 

my understanding if define object using default constructor, say

my_class my_object; 

then my_object.a random value, pointer my_object.b random value, vector c well-behaved, empty vector.

in other words, default constructor of c called while default constructors of , b not. understanding correctly? reason this?

thank you!

a , b have non-class types, meaning have no constructors @ all. otherwise, description correct: my_object.a , my_object.b have indeterminate values, while my_object.c constructed.

as why... writing user-defined constructor , not mentioning a , b in initializer list (and not using c++11 in-class member initializers) explicitly asked compiler leave these members uninitialized.

note if class did not have user-defined constructor, you'd able control initial values of my_object.a , my_object.b outside, specifying initializers @ point of object declaration

my_class my_object1; // garbage in `my_object1.a` , `my_object1.b`  my_class my_object2{}; // 0 in `my_object2.a` , null pointer in `my_object2.b` 

but when wrote own default constructor, told compiler want "override" initialization behavior , yourself.


Comments

Popular posts from this blog

python - No exponential form of the z-axis in matplotlib-3D-plots -

php - Best Light server (Linux + Web server + Database) for Raspberry Pi -

c# - "Newtonsoft.Json.JsonSerializationException unable to find constructor to use for types" error when deserializing class -