Knowledge (XXG)

Run-time type information

Source 📝

1573:
The RTTI unit is used to manipulate object type information at run time. This unit contains a set of classes that allow you to: get information about an object's class and its ancestors, properties, methods and events, change property values and call methods. The following example shows the use of
1574:
the RTTI module to obtain information about the class to which an object belongs, creating it, and to call its method. The example assumes that the TSubject class has been declared in a unit named SubjectUnit.
51:. Run-time type information may be available for all types or only to types that explicitly have it (as is the case with Ada). Run-time type information is a specialization of a more general concept called 128:
Some compilers have flags to disable RTTI. Using these flags may reduce the overall size of the application, making them especially useful when targeting systems with a limited amount of memory.
1538:
is used to check the type of a class at runtime. It tests the belonging of an object to a given class, including classes of individual ancestors present in the inheritance hierarchy tree (e.g.
207:. Whether an exception is thrown for other null reference arguments is implementation-dependent. In other words, for the exception to be guaranteed, the expression must take the form 808:
typecast behaves similarly; if the object being cast is not actually an instance of the target type, and cannot be converted to one by a language-defined method, an instance of
2142: 2183: 188:
may need to traverse the class derivation lattice of its argument at runtime. Some aspects of the returned object are implementation-defined, such as
2173: 106:, etc.). In Ada, objects of tagged types also store a type tag, which permits the identification of the type of these object at runtime. The 1990: 785:
typecast (where type check occurs while compiling), a type safety check is performed at runtime. If the types are not compatible, an
114: 1388: 798: 764: 1380:
Method specific for B was invoked Method specific for B was invoked Exception std::bad_cast thrown. Object is not of type B
1914: 772: 768: 147: 837: 805: 40: 825: 151: 110:
operator can be used to test, at runtime, if an object is of a specific type and may be safely converted to it.
782: 2125: 2113: 832:
as its argument, and wishes to perform some additional operation if the object passed is an instance of
48: 2067: 2042: 125:
to allow objects of derived classes to perform proper cleanup if they are deleted from a base pointer.
2178: 1904: 786: 122: 52: 62:
did not include run-time type information, because he thought this mechanism was often misused.
1570:
is used when an object needs to be treated at run time as if it belonged to an ancestor class.
1392: 790: 155: 2014: 1531: 59: 1919: 16:
Programming language feature that exposes information about an object's data type at runtime
1940: 750: 71: 2150: 2168: 2089: 1899: 118: 2162: 179: 143: 36: 94:
operator, and manipulate type information at run time with classes contained in the
794: 204: 184: 777: 755: 746: 821: 86:
class. In Object Pascal, RTTI can be used to perform safe type casts with the
44: 2114:
http://cs.nyu.edu/courses/fall11/CSCI-GA.2110-003/documents/c++2003std.pdf
121:. In practice, this is not a limitation because base classes must have a 904:// Since RTTI is included in the virtual method table there should be at 1966: 2018: 1909: 742: 32: 174:
in situations where just the class information is needed, because
78:
operator, and to manipulate type information at runtime using the
1566:, where the latter is the ancestor of all classes). The operator 363:// The string returned by typeid::name is implementation-defined. 162:
object, which exists until the end of the program. The use of
192:, and cannot be relied on across compilers to be consistent. 90:
operator, test the class to which an object belongs with the
2090:"Avoiding RTTI, and support for -fno-rtti in Arm Compiler 6" 166:, in a non-polymorphic context, is often preferred over 2112:
C++ standard (ISO/IEC14882) section 5.2.8 , 18.5.1 –
749:
a reference or pointer to a more specific type in the
711:// because the expression for typeid is not the result 708:// does not meet requirements to throw std::bad_typeid 31:) is a feature of some programming languages (such as 722:
Output (exact output varies by system and compiler):
203:
is the result of applying the unary * operator on a
1057:// Cast will be successful only for B type objects. 654:// Not undefined behavior; throws std::bad_typeid. 1967:"Language support library [support.rtti]" 2069:Ada 95: The Craft of Object-Oriented Programming 612:// Employee (references can also be polymorphic) 561:// because it is the dereference of a 459:// Employee (statically known at compile-time). 215:is any expression resulting in a null pointer. 558:// Employee (looked up dynamically at run-time 507:// Person* (statically known at compile-time). 1009:"Method specific for B was invoked" 949:"Method specific for A was invoked" 564:// pointer to a polymorphic class). 411:// Person (statically known at compile-time). 43:) that exposes information about an object's 8: 113:RTTI is available only for classes that are 2066:English, John (2002-02-22). "Chapter 15". 725:Person Employee Person* Employee Employee 2126:"ClassCastException (Java Platform SE 8)" 693:// Undefined behavior: dereferencing null 1931: 1240:// Array of pointers to base class A. 117:, which means they have at least one 7: 1177:" Object is not of type B" 797:will be returned (when dealing with 714:// of applying the unary * operator. 70:In C++, RTTI can be used to do safe 199:are thrown when the expression for 146:(keyword) is used to determine the 2146:operator at IBM Mac OS X Compilers 1502:" Object is not B type" 789:will be thrown (when dealing with 14: 2184:Programming language comparisons 2043:"Working with RTTI - RAD Studio" 2024:. Bjarne Stroustrup. p. 50 1750:'SubjectUnit.TSubject' 907:// least one virtual function. 1: 2019:"A History of C++: 1979—1991" 1991:"Object-oriented programming" 1941:"Runtime Type Identification" 1915:Reflection (computer science) 2174:Class (computer programming) 810:java.lang.ClassCastException 58:In the original C++ design, 25:run-time type identification 2200: 1546:class that has ancestors: 1939:Sun Microsystems (2000). 844:. This can be done using 154:at runtime. It returns a 21:run-time type information 19:In computer programming, 1576: 1397: 850: 222: 2047:docwiki.embarcadero.com 1312:// Pointer to A object. 1288:// Pointer to B object. 1264:// Pointer to B object. 1138:" Exception " 190:std::type_info::name() 1945:C++ Programming Guide 1530:In Object Pascal and 1526:Object Pascal, Delphi 1383:A similar version of 1387:can be written with 1159:" thrown." 759:, the target of the 98:unit (i.e. classes: 76:dynamic_cast<> 182:procedure, whereas 1905:Type introspection 123:virtual destructor 53:type introspection 2015:Bjarne Stroustrup 1995:learn.adacore.com 1759:TRttiInstanceType 1711:TRttiInstanceType 1597:WithoutReflection 1481:methodSpecificToB 1099:MethodSpecificToB 994:MethodSpecificToB 934:MethodSpecificToA 195:Objects of class 104:TRttiInstanceType 60:Bjarne Stroustrup 2191: 2154:operator at MSDN 2153: 2145: 2130: 2129: 2122: 2116: 2110: 2104: 2103: 2101: 2100: 2086: 2080: 2079: 2077: 2076: 2063: 2057: 2056: 2054: 2053: 2039: 2033: 2032: 2030: 2029: 2023: 2011: 2005: 2004: 2002: 2001: 1987: 1981: 1980: 1978: 1977: 1963: 1957: 1956: 1954: 1952: 1936: 1889: 1886: 1883: 1880: 1877: 1874: 1871: 1868: 1865: 1862: 1859: 1856: 1853: 1850: 1847: 1844: 1841: 1838: 1835: 1832: 1829: 1826: 1823: 1820: 1817: 1814: 1811: 1808: 1805: 1802: 1799: 1796: 1793: 1790: 1787: 1784: 1783:'Create' 1781: 1778: 1775: 1772: 1769: 1766: 1763: 1760: 1757: 1754: 1751: 1748: 1745: 1742: 1739: 1736: 1733: 1730: 1727: 1724: 1721: 1718: 1715: 1712: 1709: 1706: 1703: 1700: 1697: 1694: 1691: 1688: 1685: 1682: 1679: 1676: 1673: 1670: 1667: 1664: 1661: 1658: 1655: 1652: 1649: 1646: 1643: 1640: 1637: 1634: 1631: 1628: 1625: 1622: 1619: 1616: 1613: 1610: 1607: 1604: 1601: 1598: 1595: 1592: 1589: 1586: 1583: 1580: 1569: 1537: 1521: 1518: 1515: 1512: 1509: 1506: 1503: 1500: 1497: 1494: 1491: 1488: 1485: 1482: 1479: 1476: 1473: 1470: 1467: 1464: 1461: 1458: 1455: 1452: 1449: 1446: 1443: 1440: 1437: 1434: 1431: 1428: 1425: 1422: 1419: 1416: 1413: 1410: 1407: 1404: 1401: 1386: 1377:Console output: 1373: 1370: 1367: 1364: 1361: 1358: 1355: 1352: 1349: 1346: 1343: 1340: 1337: 1334: 1331: 1328: 1325: 1322: 1319: 1316: 1313: 1310: 1307: 1304: 1301: 1298: 1295: 1292: 1289: 1286: 1283: 1280: 1277: 1274: 1271: 1268: 1265: 1262: 1259: 1256: 1253: 1250: 1247: 1244: 1241: 1238: 1235: 1232: 1229: 1226: 1223: 1220: 1217: 1214: 1211: 1208: 1205: 1202: 1199: 1196: 1193: 1190: 1187: 1184: 1181: 1178: 1175: 1172: 1169: 1166: 1163: 1160: 1157: 1154: 1151: 1148: 1145: 1142: 1139: 1136: 1133: 1130: 1127: 1124: 1121: 1118: 1115: 1112: 1109: 1106: 1103: 1100: 1097: 1094: 1091: 1088: 1085: 1082: 1079: 1076: 1073: 1070: 1067: 1064: 1061: 1058: 1055: 1052: 1049: 1046: 1043: 1040: 1037: 1034: 1031: 1028: 1025: 1022: 1019: 1016: 1013: 1010: 1007: 1004: 1001: 998: 995: 992: 989: 986: 983: 980: 977: 974: 971: 968: 965: 962: 959: 956: 953: 950: 947: 944: 941: 938: 935: 932: 929: 926: 923: 920: 917: 914: 911: 908: 905: 902: 899: 896: 893: 890: 887: 884: 881: 878: 875: 874:<typeinfo> 872: 869: 866: 863: 862:<iostream> 860: 857: 854: 847: 843: 835: 831: 812:will be thrown. 811: 780: 762: 758: 740: 718: 715: 712: 709: 706: 703: 700: 697: 694: 691: 688: 685: 682: 679: 676: 673: 670: 667: 664: 661: 658: 655: 652: 649: 646: 643: 640: 637: 634: 631: 628: 625: 622: 619: 616: 613: 610: 607: 604: 601: 598: 595: 592: 589: 586: 583: 580: 577: 574: 571: 568: 565: 562: 559: 556: 553: 550: 547: 544: 541: 538: 535: 532: 529: 526: 523: 520: 517: 514: 511: 508: 505: 502: 499: 496: 493: 490: 487: 484: 481: 478: 475: 472: 469: 466: 463: 460: 457: 454: 451: 448: 445: 442: 439: 436: 433: 430: 427: 424: 421: 418: 415: 412: 409: 406: 403: 400: 397: 394: 391: 388: 385: 382: 379: 376: 373: 370: 367: 364: 361: 358: 355: 352: 349: 346: 343: 340: 337: 334: 331: 328: 325: 322: 319: 316: 313: 310: 307: 304: 301: 298: 295: 292: 289: 286: 283: 280: 277: 274: 271: 268: 265: 262: 259: 256: 253: 250: 247: 244: 241: 238: 235: 234:<typeinfo> 232: 229: 228:<iostream> 226: 214: 210: 202: 198: 191: 187: 177: 173: 168:dynamic_cast< 165: 161: 142: 109: 97: 93: 89: 85: 81: 77: 2199: 2198: 2194: 2193: 2192: 2190: 2189: 2188: 2159: 2158: 2151: 2143: 2139: 2134: 2133: 2124: 2123: 2119: 2111: 2107: 2098: 2096: 2088: 2087: 2083: 2074: 2072: 2065: 2064: 2060: 2051: 2049: 2041: 2040: 2036: 2027: 2025: 2021: 2013: 2012: 2008: 1999: 1997: 1989: 1988: 1984: 1975: 1973: 1965: 1964: 1960: 1950: 1948: 1938: 1937: 1933: 1928: 1896: 1891: 1890: 1887: 1884: 1881: 1878: 1875: 1872: 1869: 1866: 1863: 1860: 1857: 1854: 1851: 1848: 1845: 1842: 1839: 1837:'Hello' 1836: 1833: 1830: 1827: 1824: 1821: 1818: 1815: 1812: 1809: 1806: 1803: 1800: 1797: 1794: 1791: 1788: 1785: 1782: 1779: 1776: 1773: 1770: 1767: 1764: 1761: 1758: 1755: 1752: 1749: 1746: 1743: 1740: 1737: 1734: 1731: 1728: 1725: 1722: 1719: 1716: 1713: 1710: 1707: 1704: 1701: 1698: 1695: 1692: 1689: 1686: 1683: 1680: 1677: 1674: 1671: 1668: 1665: 1662: 1659: 1656: 1653: 1650: 1647: 1644: 1641: 1638: 1635: 1632: 1629: 1626: 1623: 1620: 1617: 1614: 1611: 1608: 1605: 1602: 1599: 1596: 1593: 1590: 1587: 1584: 1581: 1578: 1567: 1535: 1534:, the operator 1528: 1523: 1522: 1519: 1516: 1513: 1510: 1507: 1504: 1501: 1498: 1495: 1492: 1489: 1486: 1483: 1480: 1477: 1474: 1471: 1468: 1465: 1462: 1459: 1456: 1453: 1450: 1447: 1444: 1441: 1438: 1435: 1432: 1429: 1426: 1423: 1420: 1417: 1414: 1411: 1408: 1405: 1402: 1399: 1384: 1381: 1375: 1374: 1371: 1368: 1365: 1362: 1359: 1356: 1353: 1350: 1347: 1344: 1341: 1338: 1335: 1332: 1329: 1326: 1323: 1320: 1317: 1314: 1311: 1308: 1305: 1302: 1299: 1296: 1293: 1290: 1287: 1284: 1281: 1278: 1275: 1272: 1269: 1266: 1263: 1260: 1257: 1254: 1251: 1248: 1245: 1242: 1239: 1236: 1233: 1230: 1227: 1224: 1221: 1218: 1215: 1212: 1209: 1206: 1203: 1200: 1197: 1194: 1191: 1188: 1185: 1182: 1179: 1176: 1173: 1170: 1167: 1164: 1161: 1158: 1155: 1152: 1149: 1146: 1143: 1140: 1137: 1134: 1131: 1128: 1125: 1122: 1119: 1116: 1113: 1110: 1107: 1104: 1101: 1098: 1095: 1092: 1089: 1086: 1083: 1080: 1077: 1074: 1071: 1068: 1065: 1062: 1059: 1056: 1053: 1050: 1047: 1044: 1041: 1038: 1035: 1032: 1029: 1026: 1023: 1020: 1017: 1014: 1011: 1008: 1005: 1002: 999: 996: 993: 990: 987: 984: 981: 978: 975: 972: 969: 966: 963: 960: 957: 954: 951: 948: 945: 942: 939: 936: 933: 930: 927: 924: 921: 918: 915: 912: 909: 906: 903: 900: 897: 894: 891: 888: 885: 882: 879: 876: 873: 870: 867: 864: 861: 858: 855: 852: 845: 841: 833: 829: 818: 809: 776: 760: 754: 751:class hierarchy 738: 735: 726: 720: 719: 716: 713: 710: 707: 704: 701: 698: 695: 692: 689: 686: 683: 680: 677: 674: 671: 668: 665: 662: 659: 656: 653: 650: 647: 644: 641: 638: 635: 632: 629: 626: 623: 620: 617: 614: 611: 608: 605: 602: 599: 596: 593: 590: 587: 584: 581: 578: 575: 572: 569: 566: 563: 560: 557: 554: 551: 548: 545: 542: 539: 536: 533: 530: 527: 524: 521: 518: 515: 512: 509: 506: 503: 500: 497: 494: 491: 488: 485: 482: 479: 476: 473: 470: 467: 464: 461: 458: 455: 452: 449: 446: 443: 440: 437: 434: 431: 428: 425: 422: 419: 416: 413: 410: 407: 404: 401: 398: 395: 392: 389: 386: 383: 380: 377: 374: 371: 368: 365: 362: 359: 356: 353: 350: 347: 344: 341: 338: 335: 332: 329: 326: 323: 320: 317: 314: 311: 308: 305: 302: 299: 296: 293: 290: 287: 284: 281: 278: 275: 272: 269: 266: 263: 260: 257: 254: 251: 248: 245: 242: 239: 236: 233: 230: 227: 224: 221: 212: 208: 200: 197:std::bad_typeid 196: 189: 183: 175: 167: 163: 159: 140: 137: 107: 95: 91: 87: 83: 79: 75: 68: 17: 12: 11: 5: 2197: 2195: 2187: 2186: 2181: 2176: 2171: 2161: 2160: 2157: 2156: 2148: 2138: 2137:External links 2135: 2132: 2131: 2117: 2105: 2081: 2058: 2034: 2017:(March 1993). 2006: 1982: 1958: 1930: 1929: 1927: 1924: 1923: 1922: 1920:Template (C++) 1917: 1912: 1907: 1902: 1900:Type inference 1895: 1892: 1684:WithReflection 1577: 1527: 1524: 1398: 1379: 868:<memory> 851: 817: 814: 734: 727: 724: 223: 220: 217: 160:std::type_info 136: 130: 119:virtual method 84:std::type_info 67: 64: 15: 13: 10: 9: 6: 4: 3: 2: 2196: 2185: 2182: 2180: 2177: 2175: 2172: 2170: 2167: 2166: 2164: 2155: 2149: 2147: 2141: 2140: 2136: 2127: 2121: 2118: 2115: 2109: 2106: 2095: 2094:Arm Developer 2091: 2085: 2082: 2071: 2070: 2062: 2059: 2048: 2044: 2038: 2035: 2020: 2016: 2010: 2007: 1996: 1992: 1986: 1983: 1972: 1968: 1962: 1959: 1946: 1942: 1935: 1932: 1925: 1921: 1918: 1916: 1913: 1911: 1908: 1906: 1903: 1901: 1898: 1897: 1893: 1804:MetaclassType 1575: 1571: 1565: 1561: 1557: 1553: 1549: 1545: 1541: 1533: 1525: 1396: 1394: 1390: 1378: 856:<array> 849: 839: 827: 823: 820:Suppose some 815: 813: 807: 802: 800: 796: 792: 788: 784: 779: 774: 770: 766: 757: 753:. Unlike the 752: 748: 744: 733:and Java cast 732: 728: 723: 218: 216: 206: 193: 186: 181: 180:constant-time 171: 157: 153: 149: 145: 144:reserved word 135: 131: 129: 126: 124: 120: 116: 111: 105: 101: 82:operator and 73: 65: 63: 61: 56: 54: 50: 46: 42: 38: 37:Object Pascal 34: 30: 26: 22: 2152:dynamic_cast 2144:dynamic_cast 2120: 2108: 2097:. Retrieved 2093: 2084: 2073:. Retrieved 2068: 2061: 2050:. Retrieved 2046: 2037: 2026:. Retrieved 2009: 1998:. Retrieved 1994: 1985: 1974:. Retrieved 1970: 1961: 1949:. Retrieved 1944: 1934: 1699:TRttiContext 1572: 1563: 1559: 1555: 1551: 1547: 1543: 1539: 1529: 1436:dynamic_cast 1382: 1376: 1072:dynamic_cast 848:as follows. 846:dynamic_cast 819: 803: 795:null pointer 761:dynamic_cast 745:is used for 741:operator in 739:dynamic_cast 736: 731:dynamic_cast 730: 721: 205:null pointer 194: 185:dynamic_cast 178:is always a 169: 138: 133: 127: 112: 103: 100:TRttiContext 99: 69: 57: 28: 24: 20: 18: 1738:RttiContext 1693:RttiContext 1588:SubjectUnit 1560:TPersistent 1548:TWinControl 1391:instead of 1297:make_unique 1273:make_unique 1249:make_unique 778:static_cast 756:static_cast 747:downcasting 115:polymorphic 2179:Data types 2163:Categories 2099:2021-07-13 2075:2021-07-13 2052:2021-06-06 2028:2009-05-18 2000:2021-07-13 1976:2021-07-13 1926:References 1556:TComponent 1403:MyFunction 1393:references 1385:MyFunction 1366:array_of_a 1357:MyFunction 1291:array_of_a 1267:array_of_a 1243:array_of_a 1234:array_of_a 1213:unique_ptr 1030:MyFunction 791:references 763:must be a 209:typeid(*p) 170:class_type 74:using the 1831:GetMethod 1777:GetMethod 1681:procedure 1621:MySubject 1606:MySubject 1594:procedure 1081:&> 880:namespace 824:takes an 787:exception 775:. Unlike 769:reference 156:reference 72:typecasts 45:data type 1951:16 April 1947:. Oracle 1894:See also 1825:RttiType 1816:AsObject 1798:RttiType 1771:RttiType 1744:FindType 1732:RttiType 1705:RttiType 1627:TSubject 1612:TSubject 1552:TControl 1505:<< 1499:<< 1389:pointers 1180:<< 1174:<< 1162:<< 1156:<< 1141:<< 1135:<< 1117:bad_cast 1012:<< 1006:<< 952:<< 946:<< 871:#include 865:#include 859:#include 853:#include 838:subclass 828:of type 822:function 799:pointers 597:<< 576:<< 543:<< 519:<< 492:<< 471:<< 444:<< 432:employee 423:<< 396:<< 375:<< 357:employee 339:employee 318:employee 315:Employee 279:Employee 231:#include 225:#include 66:Overview 1867:Subject 1864:finally 1852:Subject 1765:Subject 1723:TObject 1717:Subject 1657:Subject 1654:finally 1642:Subject 1564:TObject 1544:TButton 1540:Button1 1469:nullptr 925:default 910:virtual 816:Example 793:) or a 783:C-style 765:pointer 627:nullptr 267:default 252:virtual 219:Example 49:runtime 1971:eel.is 1910:typeof 1846:Invoke 1792:Invoke 1633:Create 1532:Delphi 985:public 976:public 898:public 826:object 729:C++ – 696:typeid 672:Person 639:typeid 615:Person 579:typeid 522:typeid 474:typeid 426:typeid 384:person 378:typeid 345:Person 324:Person 309:person 306:Person 288:Person 285:public 258:Person 246:public 240:Person 211:where 201:typeid 176:typeid 164:typeid 152:object 150:of an 141:typeid 134:typeid 132:C++ – 80:typeid 39:, and 2022:(PDF) 1729:begin 1648:Hello 1618:begin 1542:is a 1478:-> 1445:*> 1207:array 1120:& 1114:const 1108:catch 1063:& 1039:& 967:class 889:class 877:using 773:class 702:p_ref 678:p_ref 675:& 663:(...) 660:catch 348:& 336:& 276:class 237:class 148:class 1953:2015 1873:Free 1663:Free 1582:RTTI 1579:uses 1514:endl 1496:cerr 1487:else 1475:my_b 1463:my_b 1451:my_a 1439:< 1430:my_b 1415:my_a 1400:void 1339:< 1306:> 1300:< 1282:> 1276:< 1258:> 1252:< 1231:> 1222:> 1216:< 1210:< 1198:main 1183:endl 1171:cerr 1165:endl 1150:what 1132:cerr 1093:my_b 1087:my_a 1075:< 1066:my_b 1042:my_a 1027:void 1015:endl 1003:cout 991:void 955:endl 943:cout 931:void 836:, a 806:Java 781:and 737:The 606:endl 591:name 573:cout 552:endl 537:name 516:cout 501:endl 486:name 468:cout 453:endl 438:name 420:cout 405:endl 390:name 372:cout 297:main 172:> 139:The 96:RTTI 29:RTTI 2169:C++ 1885:end 1879:end 1822:try 1690:var 1675:end 1669:end 1639:try 1603:var 1508:std 1490:std 1484:(); 1321:int 1315:for 1309:(); 1285:(); 1261:(); 1195:int 1102:(); 1051:try 883:std 840:of 801:). 771:to 767:or 743:C++ 633:try 600:std 585:ref 567:std 546:std 531:ptr 510:std 495:std 480:ptr 462:std 447:std 414:std 399:std 366:std 351:ref 330:ptr 294:int 291:{}; 158:to 47:at 41:Ada 33:C++ 23:or 2165:: 2092:. 2045:. 1993:. 1969:. 1943:. 1768::= 1756:as 1735::= 1624::= 1568:as 1562:→ 1558:→ 1554:→ 1550:→ 1536:is 1511::: 1493::: 1466:!= 1457:if 1454:); 1395:: 1369:); 1348:++ 1201:() 1153:() 1090:); 1024:}; 997:() 964:}; 937:() 919:() 804:A 705:); 651:); 603::: 594:() 588:). 570::: 549::: 540:() 534:). 513::: 498::: 489:() 483:). 465::: 450::: 441:() 435:). 417::: 402::: 393:() 387:). 369::: 300:() 273:}; 261:() 108:in 102:, 92:is 88:as 55:. 35:, 2128:. 2102:. 2078:. 2055:. 2031:. 2003:. 1979:. 1955:. 1888:; 1882:; 1876:; 1870:. 1861:; 1858:) 1855:, 1849:( 1843:. 1840:) 1834:( 1828:. 1819:; 1813:. 1810:) 1807:, 1801:. 1795:( 1789:. 1786:) 1780:( 1774:. 1762:; 1753:) 1747:( 1741:. 1726:; 1720:: 1714:; 1708:: 1702:; 1696:: 1687:; 1678:; 1672:; 1666:; 1660:. 1651:; 1645:. 1636:; 1630:. 1615:; 1609:: 1600:; 1591:; 1585:, 1520:} 1517:; 1472:) 1460:( 1448:( 1442:B 1433:= 1427:* 1424:B 1421:{ 1418:) 1412:* 1409:A 1406:( 1372:} 1363:* 1360:( 1354:) 1351:i 1345:; 1342:3 1336:i 1333:; 1330:0 1327:= 1324:i 1318:( 1303:A 1294:= 1279:B 1270:= 1255:B 1246:= 1237:; 1228:3 1225:, 1219:A 1204:{ 1192:} 1189:} 1186:; 1168:; 1147:. 1144:e 1129:{ 1126:) 1123:e 1111:( 1105:} 1096:. 1084:( 1078:B 1069:= 1060:B 1054:{ 1048:{ 1045:) 1036:A 1033:( 1021:} 1018:; 1000:{ 988:: 982:{ 979:A 973:: 970:B 961:} 958:; 940:{ 928:; 922:= 916:A 913:~ 901:: 895:{ 892:A 886:; 842:A 834:B 830:A 717:} 699:( 690:; 687:p 684:* 681:= 669:} 666:{ 657:} 648:p 645:* 642:( 636:{ 630:; 624:= 621:p 618:* 609:; 582:( 555:; 528:* 525:( 504:; 477:( 456:; 429:( 408:; 381:( 360:; 354:= 342:; 333:= 327:* 321:; 312:; 303:{ 282:: 270:; 264:= 255:~ 249:: 243:{ 213:p 27:(

Index

C++
Object Pascal
Ada
data type
runtime
type introspection
Bjarne Stroustrup
typecasts
polymorphic
virtual method
virtual destructor
reserved word
class
object
reference
constant-time
dynamic_cast
null pointer
C++
downcasting
class hierarchy
static_cast
pointer
reference
class
static_cast
C-style
exception
references
null pointer

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.