constructor-init.cpp revision 1eb4433ac451dc16f4133a88af2d002ac26c58ef
1// RUN: clang-cc %s -emit-llvm -o %t 2 3extern "C" int printf(...); 4 5struct M { 6 M() { printf("M()\n"); } 7 M(int i) { iM = i; printf("M(%d)\n", i); } 8 int iM; 9 void MPR() {printf("iM = %d\n", iM); }; 10}; 11 12struct P { 13 P() { printf("P()\n"); } 14 P(int i) { iP = i; printf("P(%d)\n", i); } 15 int iP; 16 void PPR() {printf("iP = %d\n", iP); }; 17}; 18 19struct Q { 20 Q() { printf("Q()\n"); } 21 Q(int i) { iQ = i; printf("Q(%d)\n", i); } 22 int iQ; 23 void QPR() {printf("iQ = %d\n", iQ); }; 24}; 25 26struct N : M , P, Q { 27 N() : f1(1.314), P(2000), ld(00.1234+f1), M(1000), Q(3000), 28 d1(3.4567), i1(1234), m1(100) { printf("N()\n"); } 29 M m1; 30 M m2; 31 float f1; 32 int i1; 33 float d1; 34 void PR() { 35 printf("f1 = %f d1 = %f i1 = %d ld = %f \n", f1,d1,i1, ld); 36 MPR(); 37 PPR(); 38 QPR(); 39 printf("iQ = %d\n", iQ); 40 printf("iP = %d\n", iP); 41 printf("iM = %d\n", iM); 42 // FIXME. We don't yet support this syntax. 43 // printf("iQ = %d\n", (*this).iQ); 44 printf("iQ = %d\n", this->iQ); 45 printf("iP = %d\n", this->iP); 46 printf("iM = %d\n", this->iM); 47 } 48 float ld; 49 float ff; 50 M arr_m[3]; 51 P arr_p[1][3]; 52 Q arr_q[2][3][4]; 53}; 54 55int main() { 56 M m1; 57 58 N n1; 59 n1.PR(); 60} 61 62