C++语言: Codee#25754
01 // type_info example
02 #include <iostream>
03 #include <typeinfo>
04 using namespace std;
05
06 struct Base {};
07 struct Derived : Base {};
08 struct Poly_Base
09 {
10 virtual void Member() {}
11 };
12 struct Poly_Derived: Poly_Base {};
13
14 int main()
15 {
16 // built-in types:
17 int i;
18 int * pi;
19 cout << "int is: " << typeid(int).name() << endl;
20 cout << " i is: " << typeid(i).name() << endl;
21 cout << " pi is: " << typeid(pi).name() << endl;
22 cout << "*pi is: " << typeid(*pi).name() << endl << endl;
23
24 // non-polymorphic types:
25 Derived derived;
26 Base* pbase = &derived;
27 cout << "derived is: " << typeid(derived).name() << endl;
28 cout << " *pbase is: " << typeid(*pbase).name() << endl;
29 cout << boolalpha << "same type? ";
30 cout << ( typeid(derived) == typeid(*pbase) ) << endl << endl;
31
32 // polymorphic types:
33 Poly_Derived polyderived;
34 Poly_Base* ppolybase = &polyderived;
35 cout << "polyderived is: " << typeid(polyderived).name() << endl;
36 cout << " *ppolybase is: " << typeid(*ppolybase).name() << endl;
37 cout << boolalpha << "same type? ";
38 cout << ( typeid(polyderived) == typeid(*ppolybase) ) << endl << endl;
39 }
40 /*
41 int is: i
42 i is: i
43 pi is: Pi
44 *pi is: i
45
46 derived is: 7Derived
47 *pbase is: 4Base
48 same type? false
49
50 polyderived is: 12Poly_Derived
51 *ppolybase is: 12Poly_Derived
52 same type? true
53
54
55 Process returned 0 (0x0) execution time : 0.041 s
56 Press any key to continue.
57
58
59 */
02 #include <iostream>
03 #include <typeinfo>
04 using namespace std;
05
06 struct Base {};
07 struct Derived : Base {};
08 struct Poly_Base
09 {
10 virtual void Member() {}
11 };
12 struct Poly_Derived: Poly_Base {};
13
14 int main()
15 {
16 // built-in types:
17 int i;
18 int * pi;
19 cout << "int is: " << typeid(int).name() << endl;
20 cout << " i is: " << typeid(i).name() << endl;
21 cout << " pi is: " << typeid(pi).name() << endl;
22 cout << "*pi is: " << typeid(*pi).name() << endl << endl;
23
24 // non-polymorphic types:
25 Derived derived;
26 Base* pbase = &derived;
27 cout << "derived is: " << typeid(derived).name() << endl;
28 cout << " *pbase is: " << typeid(*pbase).name() << endl;
29 cout << boolalpha << "same type? ";
30 cout << ( typeid(derived) == typeid(*pbase) ) << endl << endl;
31
32 // polymorphic types:
33 Poly_Derived polyderived;
34 Poly_Base* ppolybase = &polyderived;
35 cout << "polyderived is: " << typeid(polyderived).name() << endl;
36 cout << " *ppolybase is: " << typeid(*ppolybase).name() << endl;
37 cout << boolalpha << "same type? ";
38 cout << ( typeid(polyderived) == typeid(*ppolybase) ) << endl << endl;
39 }
40 /*
41 int is: i
42 i is: i
43 pi is: Pi
44 *pi is: i
45
46 derived is: 7Derived
47 *pbase is: 4Base
48 same type? false
49
50 polyderived is: 12Poly_Derived
51 *ppolybase is: 12Poly_Derived
52 same type? true
53
54
55 Process returned 0 (0x0) execution time : 0.041 s
56 Press any key to continue.
57
58
59 */