1//===-- main.cpp ------------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10class Conversion 11{ 12public: 13 Conversion (int i) : 14 m_i (i) 15 {} 16 17 operator bool() 18 { 19 return m_i != 0; 20 } 21 22private: 23 int m_i; 24}; 25 26class A 27{ 28public: 29 A(int i=0): 30 m_a_int(i), 31 m_aa_int(i+1) 32 { 33 } 34 35 //virtual 36 ~A() 37 { 38 } 39 40 int 41 GetInteger() const 42 { 43 return m_a_int; 44 } 45 void 46 SetInteger(int i) 47 { 48 m_a_int = i; 49 } 50 51protected: 52 int m_a_int; 53 int m_aa_int; 54}; 55 56class B : public A 57{ 58public: 59 B(int ai, int bi) : 60 A(ai), 61 m_b_int(bi) 62 { 63 } 64 65 //virtual 66 ~B() 67 { 68 } 69 70 int 71 GetIntegerB() const 72 { 73 return m_b_int; 74 } 75 void 76 SetIntegerB(int i) 77 { 78 m_b_int = i; 79 } 80 81protected: 82 int m_b_int; 83}; 84 85#include <cstdio> 86class C : public B 87{ 88public: 89 C(int ai, int bi, int ci) : 90 B(ai, bi), 91 m_c_int(ci) 92 { 93 printf("Within C::ctor() m_c_int=%d\n", m_c_int); // Set break point at this line. 94 } 95 96 //virtual 97 ~C() 98 { 99 } 100 101 int 102 GetIntegerC() const 103 { 104 return m_c_int; 105 } 106 void 107 SetIntegerC(int i) 108 { 109 m_c_int = i; 110 } 111 112protected: 113 int m_c_int; 114}; 115 116int 117main (int argc, char const *argv[]) 118{ 119 A a(12); 120 B b(22,33); 121 C c(44,55,66); 122 Conversion conv(1); 123 if (conv) 124 return b.GetIntegerB() - a.GetInteger() + c.GetInteger(); 125 return 0; 126} 127