sdk-RTTI是什么?MFC和它有什么关系?

问题描述

RTTI是什么?MFC和它有什么关系?

RTTI是什么呀?和MFC内部机制有什么关系,请简要用易懂的语言说说。我新手。

解决方案

详细去看《深入浅出MFC》(网上有电子版,专门有一章讲RTTI)
简单说下,RTTI就是运行时刻类型识别,它和DC&DI(动态创建)组合在一起,目的是为了让程序在运行的时候(而不是编译的时候)可以使用编译的时候不知道类型的代码。
一个典型的例子就是插件。我们知道,一个程序可以允许第三方编写插件程序,主程序调用。但是插件的代码是在主程序已经编写完成后追加上去的。显然不能在源代码中链接或者包含的方法去调用。那就需要RTTI/DC/DI。
在现代的编程语言,比如Java、C#中,这些功能靠反射实现,编译器在编译代码的同时,会将类型、方法原形等元数据也写入程序中。但是C++是一种落后且野蛮的语言,它在语法层面不支持反射。所以微软通过一些技巧,用宏和晦涩的代码模拟了这个过程,这些代码也是MFC的一部分。MFC中这种弥补语言缺陷的技巧有很多,比如消息映射宏、异常处理、序列化等等。

解决方案二:

RTTI(Run-Time Type Information,通过运行时类型信息)

解决方案三:

C++的运行时类型,使用类型信息来进行动态创建

时间: 2024-09-10 02:34:00

sdk-RTTI是什么?MFC和它有什么关系?的相关文章

深入解析MFC -- 句柄与对象的关系

CWnd::FromHandlePermanent --根据窗口句柄得到CWnd*指针 This function, unlike FromHandle, does not create temporary objects.   CWnd::FromHandle--根据窗口句柄得到CWnd*指针 CWnd* PASCAL CWnd::FromHandle(HWND hWnd){ CHandleMap* pMap = afxMapHWND(TRUE); //create map if not ex

Symbian编程总结-深入篇-RTTI的实现及原理说明

一.前言 RTTI(运行时类型信息)是被现代高级编程语言所普遍支持的特性之一,如C#中的"a is A".JAVA中的"a instanceof A"都属于RTTI的范畴.然而Symbian OS C++并不支持这个特性,这导致由Win32.JAVA转向Symbian的开发人员或者代码的移植都带来很大的不便,本文将解决这个问题. 二.什么是RTTI RTTI指的是"运行时类型识别(Run-Time Type Identification)"或者&

MFC教程(2)-- MFC和Win32

MFC Object和Windows Object的关系 MFC中最重要的封装是对Win32 API的封装,因此,理解Windows Object和MFC Object (C++对象,一个C++类的实例)之间的关系是理解MFC的关键之一.所谓Windows Object(Windows对象)是Win32下用句柄表示的Windows操作系统对象:所谓MFC Object (MFC对象)是C++对象,是一个C++类的实例,这里(本书范围内)MFC Object是有特定含义的,指封装Windows O

如何学好VC和MFC(各前辈学习方法及感受整理)(二)

接上篇) VC 进阶:1. C 语言:2. C++ ,OOP:3. Windows 运作机理,SDK编程:4. MFC类库,应用程序框架编程:5. ActiveX,ATL,COM--每步骤通常需要6个月,最快也得3个月,诸位同意否? 学 VC 或 windows 编程分三 STEP:1. 只 SDK 提供的 Function 作开发,不要Object, 你会知 How to handle Message. 2. MFC 编程, 用 CEdit 等开发.3. 再用 VC如果你有一个别人的好程序,

win32中使用MFC类库

能用, #include <afx.h> 在SDK程序中使用MFC中的辅助类 由于MFC中的辅助类,如CFileDialog,CFileFind,CString等使用起来非常的方便 如果用API来完成相应的工作,则需要自己完成大量的重复工作,使用MFC的辅助类 可以节省大量的开发时间,具体方法如下: 1.加入相应的头文件 由于在SDK程序中一定要包含windows.h头文件,所以在使用MFC中的类时, 如加入afx.h一类的头文件会有一个提示与windows.h相冲突,解决的办法是, 去掉wi

进入MFC讲坛的前言(五)

框窗.视图和文档及其关系  MFC架构的另外一个特色是它的框窗.视图和文档这个三位一体的结构,它是一个典型的MVC(Model.View and Controler)结构.严格的讲,框窗不属于MVC中的任何一项,MFC设计者将框窗加进来是为了能更好的协调文档 和视图.而MVC中的Controler这一项,则是应用本身的应用逻辑. 在这三者中,需要特别注意的.也最能够体现个人的编程水平的是框窗.一旦三者都存在于内存中,它们的关系就变得很简单.本章将讨论下述内容: 1.MFC的RTTI(Run Ti

全面解析MFC应用程序框架

对于程序员来说,如果要提高编程效率,一个好用的,功能强大的并且可以得心应手使用的编程工具往往会给我们程序员带来莫大的方便.其实对于现在的编程工具来说,使用哪一种工具都不是问题的关键,重要的是你能够使用到什么程度,毕竟现在的工具都是非常的强大,对于一般的编程任务来说还没有不能够胜任的工具,否则的话恐怕他就不可能在这个世界上存在哪怕是只有一个月的生命. 但是根据个人所好以及周围的人的影响,我们都会去使用某一种或者几种工具.比较Visual Basic .C++ Builder和Delphi等编程工具

MFC深入浅出-MFC和Win32

MFC和Win32   MFC Object和Windows Object的关系   MFC中最重要的封装是对Win32 API的封装,因此,理解Windows Object和MFC Object (C++对象,一个C++类的实例)之间的关系是理解MFC的关键之一.所谓Windows Object(Windows对象)是Win32下用句柄表示的Windows操作系统对象:所谓MFC Object (MFC对象)是C++对象,是一个C++类的实例,这里(本书范围内)MFC Object是有特定含义

Intellij IDEA + Android SDK + Genymotion Emulator打造最佳Android开发环境_Android

一直使用Eclipse环境开发Android,也尝鲜使用过Android Studio去开发,各种IDE配合Android SDK及SDK原生的Android Emulator的个中滋味也许大家都有领略,Eclipse的超长启动时间似乎是在与Android Emulator这个超级大腕比看谁更姗姗来迟,Android Studio的大版本号从推出来到两年后的今天仍然一直游走在1之下,不的不说襁褓婴儿不知道什么时候能长大,不得不说大哥我真不敢用你. 本文则介绍Lorinnn在开发Android过程