124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- main.cpp ------------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1090e325d6aefb5e85c31982a745c4147b50dcac3cGreg Claytonclass Conversion 1190e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton{ 1290e325d6aefb5e85c31982a745c4147b50dcac3cGreg Claytonpublic: 1390e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton Conversion (int i) : 1490e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton m_i (i) 1590e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton {} 1690e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton 1790e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton operator bool() 1890e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton { 1990e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton return m_i != 0; 2090e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton } 2190e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton 2290e325d6aefb5e85c31982a745c4147b50dcac3cGreg Claytonprivate: 2390e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton int m_i; 2490e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton}; 2590e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass A 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner A(int i=0): 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_a_int(i), 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_aa_int(i+1) 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 355d729a47805f472431a486e478a3f478c79cf8ceGreg Clayton //virtual 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~A() 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetInteger() const 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_a_int; 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetInteger(int i) 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_a_int = i; 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int m_a_int; 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int m_aa_int; 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass B : public A 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner B(int ai, int bi) : 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner A(ai), 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_b_int(bi) 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 655d729a47805f472431a486e478a3f478c79cf8ceGreg Clayton //virtual 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~B() 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetIntegerB() const 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_b_int; 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetIntegerB(int i) 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_b_int = i; 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int m_b_int; 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 85d084c4b5bcb4b26dea7d66879b3862f03f3e09e7Johnny Chen#include <cstdio> 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass C : public B 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner C(int ai, int bi, int ci) : 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner B(ai, bi), 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_c_int(ci) 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 937bafa919529dd7e3d87e9c3649179029d0158978Johnny Chen printf("Within C::ctor() m_c_int=%d\n", m_c_int); // Set break point at this line. 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 965d729a47805f472431a486e478a3f478c79cf8ceGreg Clayton //virtual 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~C() 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetIntegerC() const 10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_c_int; 10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetIntegerC(int i) 10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_c_int = i; 11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int m_c_int; 11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerint 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnermain (int argc, char const *argv[]) 11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner A a(12); 12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner B b(22,33); 12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner C c(44,55,66); 12290e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton Conversion conv(1); 12390e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton if (conv) 12490e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton return b.GetIntegerB() - a.GetInteger() + c.GetInteger(); 12590e325d6aefb5e85c31982a745c4147b50dcac3cGreg Clayton return 0; 12624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 127