C++ default member initialization for primative types

From EggeWiki
Revision as of 16:18, 30 June 2010 by Brianegge (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

<geshi lang="C++">

  1. include <stdlib.h>
  2. include <stdio.h>

class X {

   public:
   int i;

};

class Y {

   public:
       Y() {};
   int i;

};

int main(int argc, char** argv) {

   X x;
   printf("X x: %d\n", x.i);
   X x2 = X();
   printf("X x(): %d\n", x2.i);
   X *px = new X;
   printf("X *x = new X: %d\n", px->i);
   X *px2 = new X();
   printf("X *x = new X(): %d\n", px2->i);
   Y y;
   printf("Y y: %d\n", y.i);
   Y y2 = Y();
   printf("Y y(): %d\n", y2.i);
   Y *py = new Y;
   printf("Y *y = new Y: %d\n", py->i);
   Y *py2 = new Y();
   printf("Y *y = new Y(): %d\n", py2->i);
   return 0;

} </geshi>

<geshi> $ g++ -g testinit.C $ ./a.out X x: -1788433344 X x(): 0 X *x = new X: 0 X *x = new X(): 0 Y y: 1 Y y(): -1073747184 Y *y = new Y: 0 Y *y = new Y(): 0 </geshi>

See also: http://stackoverflow.com/questions/2417065/c-does-the-default-constructor-initialize-built-in-types