constructor-init.cpp revision 98a541e80848d3b7d1131237ac04e698faffd151
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() { printf("f1 = %f d1 = %f i1 = %d ld = %f \n", f1,d1,i1, ld); 35 MPR(); 36 PPR(); 37 QPR(); 38 printf("iQ = %d\n", iQ); 39 printf("iP = %d\n", iP); 40 printf("iM = %d\n", iM); 41 // FIXME. We don't yet support this syntax. 42 // printf("iQ = %d\n", (*this).iQ); 43 printf("iQ = %d\n", this->iQ); 44 printf("iP = %d\n", this->iP); 45 printf("iM = %d\n", this->iM); 46 } 47 float ld; 48 float ff; 49}; 50 51int main() { 52 M m1; 53 54 N n1; 55 n1.PR(); 56} 57 58