C++ default member initialization for primative types
<geshi lang="C++">
- include <stdlib.h>
- 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