Here you go http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3337.pdf The c++ standard itself. Refer to section 8.5.4 page no. 213. Looks like even this int a[10] = {2} is not guaranteed to initialize all the elements of the array. Sure gcc provides this but then it becomes a compiler specific thing. The language doesn't advocates it.
Saurabh Singh B.Tech (Computer Science) MNNIT blog:geekinessthecoolway.blogspot.com On Sun, Sep 28, 2014 at 3:47 PM, sagar sindwani <[email protected]> wrote: > Thanks Deepak and Rahul for the reply. > > Do you guys have any standard document or any standard book which defines > this? I totally agree with these answers but I don't have any formal > written text. > > In my example 1, the object is on stack and this lead to a1[0].z to be > un-initialized. But as the specified in example 2, Why every element of arr > is initialized, it is also on the stack ? Any source to answer this > question ? > > Thanks > Sagar > > > > On Sun, Sep 28, 2014 at 2:26 PM, Rahul Vatsa <[email protected]> > wrote: > >> >> http://stackoverflow.com/questions/3127454/how-do-c-class-members-get-initialized-if-i-dont-do-it-explicitly >> >> On Sun, Sep 28, 2014 at 12:22 PM, Deepak Garg <[email protected]> >> wrote: >> >>> Hi >>> >>> In example 1, member z will have a garbage value (i.e. 0 in your case ) >>> >>> Thanks >>> Deepak >>> On Sep 28, 2014 11:29 AM, "sagar sindwani" <[email protected]> >>> wrote: >>> >>>> I am working on How compilers handle initialization list. I came across >>>> a case where I am not sure what should be the compiler behaviour. >>>> >>>> *Example 1:-* >>>> >>>> #include <iostream> >>>> >>>> class A >>>> { >>>> public: >>>> int x,y,z; >>>> }; >>>> >>>> int main() >>>> { >>>> A a1[2] = >>>> { >>>> { 1,2 }, >>>> { 3,4 } >>>> }; >>>> >>>> std::cout << "a1[0].z is " << a1[0].z << std::endl; >>>> >>>> return 0; >>>> } >>>> >>>> In above case a1[0].z is ? g++ shows it as 0 ( zero ). It is exactly 0 >>>> or garbage value, I am not sure on that. >>>> >>>> I tried lot of books and some documents , no where I found what C++ >>>> says for initialization of class objects. >>>> >>>> You can find handling of below case in almost every book. >>>> >>>> *Example 2:- * >>>> >>>> int arr[6] = {0}; >>>> >>>> In Example 2, compilers will auto-fill all members with 0. It is >>>> mentioned in books. But when it comes to User-defined datatypes nothing is >>>> mentioned. >>>> >>>> >>>> Please share your thoughts on this. If you find any document related to >>>> this, please share it as well. >>>> >>>> Thanks >>>> Sagar >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Algorithm Geeks" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Algorithm Geeks" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Algorithm Geeks" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
