成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++實現RTTI具體操作經驗總結

開發 后端
C++實現RTTI的操作中需要注意幾個重點,比如:必須滿足特定語言的定位和要求;必須是盡可能透明的;盡可能輕便以及高效等等。

 C++編程語言中的RTTI的實現,在一定環境中起著非常重要的作用。我們在這篇文章中就會針對C++實現RTTI的操作方法進行一個總結,希望大家可以根據我們總結的經驗,來充分掌握這一應用技巧。#t#

RTTI(運行時類型信息),是所有RAD開發工具的基礎。這段時間,因為需要在自己的軟件中加入擴展的RTTI功能,于是專門對RTTI進行了研究,現在一些心得寫下來。

RTTI是比較新的編程語言提供的能力,C、Fortran、Basic就沒有,而現在幾乎所有現代的、可視化的編程語言都提供了RTTI功能。C++的標準中也對RTTI作了規定。但相對其它語言而言,C++的RTTI信息是最簡單的。

一、RTTI典型的應用需求

1、類型的識別,即能在運行時判斷出某對象、表達式等的類型,能判斷它們是基本類型(int、string),還是對象,以及它們區別于其它類型的標識;

2、對象的繼承關系的運行時判斷;

3、在出錯處理、內存診斷等處理時的輸出信息;

4、基于字符型名稱的運行時對象訪問、方法調用;

5、對象的自動保存和讀入;

6、基于ID或名稱的對象自動生成;

7、環境配置的保存和讀入;

8、程序自動生成;

二、C++實現RTTI

RTTI最直接的實現是通過編程語言的語法支持功能,由編譯器自動完成,比如:Delphi等語言就提供了Property關鍵字。C++語言沒有這些語法支持功能,因為C++不是一種RAD語言,可以將VB、Delphi、Java等與之進行對比。C++的RTTI是最簡單的,只能獲得類名和相關的繼承信息;而VB、Delphi、Java等確復雜得多,甚至于支持屬性名、方法名、事件名等。

標準C++ 提供了typeid() 操作,以得到類型信息,它的參數可以是一個表達式,可以是一個對象、指針或者引用,通過這個方法,可以得到一個指向常type_info對象,里面包含了這個表達式的類型必要的信息。type_info對象提供的功能有如下這些:

1、name(),可以得到一個包含類型信息的字符串,返回如:"int"、"MyClass"等;

2、before(),用來在類型列表中遍歷;

3、==操作,用來判斷類型是否相同;

VC中的MFC提供的RTTI實現與C++提供的差不多,但是有一些功能上和實現在的差別,但也只是提供了名稱和比較功能。
不能說,這是C++或VC中的缺陷,這是由C++的定位決定了,如果C++加上了復雜的RTTI信息,則C++可能就變成了C#或別的什么語言了。是的,C#增加了比較復雜的RTTI信息,誰讓他的主設計者就是從Borland公司過去的呢(這也決定了C++在.NET框架中的會被淘汰的命運,因為它在.NET中沒有合適的定位,就象VF被淘汰一樣)。

三、C++實現RTTI的要點

作為一種語言的新特性,RTTI的實現,應有如下要求:

1、必須滿足特定語言的定位和要求,不能說,將所有可能的功能加進去就是好東西了;

2、必須是盡可能透明的,RTTI的主要應用在IDE和底層,一般情況下,編程用戶不需要了解過多的RTTI細節,比如:作為Delphi用戶,他只需要基于屬性的訪問方法,只需要知道基于組件的保存方法,不需要了解RTTI在其中所起的作用,就象電視機的使用者不需要了解電視機的原理;

3、盡可能輕便,不能因為實現RTTI要耗費大量內存和CPU時間,不能占用太大的程序空間,當然,這個要求是相對的,

4、盡可能高效

5、作為RTTI的實現者,應該盡可能在定義了功能集的情況下,以幽雅的方法實現之。

C++實現RTTI和執久化是通過宏來完成的,幽雅嗎?算是吧。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-02 17:13:35

C++ Endian

2010-02-02 15:44:18

C++遍歷集合

2010-02-03 13:26:53

C++計時

2010-02-02 16:23:46

C++實現WPF動畫

2010-02-01 15:18:40

C++ new用法

2009-09-18 10:21:13

C#數組C#串操作

2009-09-11 13:29:31

LINQ查詢操作

2009-09-08 10:57:55

LINQ查詢操作

2010-02-02 13:57:31

C++解析#pragm

2009-08-13 18:13:27

C#學習經驗

2009-09-01 13:00:05

C#實現Windows

2010-03-24 10:06:37

Python嵌入C++

2009-08-21 17:42:36

C#調用API

2009-08-11 14:20:41

C# .NET學習經驗

2009-08-24 14:56:01

C#連接Access

2009-10-15 09:27:00

2010-05-06 15:04:54

Oracle建立DBL

2010-01-21 14:49:44

VB.NET操作Wor

2011-03-17 09:06:58

iptables映射端口

2009-09-02 14:14:44

C# COM接口轉換
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜精品久久久久久久99黑人 | 99久久精品国产麻豆演员表 | 国产精品久久久 | 日本一区二区三区免费观看 | 黄色毛片在线观看 | 欧美一a一片一级一片 | 国产精品久久免费观看 | 中文字幕在线观看视频一区 | 精品久久99 | 欧洲一区视频 | 欧美精品video | 日本三级电影在线观看视频 | 欧美 日韩 中文 | 久草免费在线视频 | 亚洲日本视频 | 日日草夜夜草 | 精品国产乱码久久久久久1区2区 | 久久99国产精品 | 免费国产视频在线观看 | 亚洲一区二区在线 | 国产精品高清一区二区三区 | 91精品国产欧美一区二区 | 午夜寂寞影院列表 | 亚洲综合国产 | 日韩在线中文 | 一区二区三区日韩 | 精品国产乱码久久久久久牛牛 | 一区二区三区视频在线观看 | 99精品欧美一区二区三区 | 91一区二区在线观看 | 7777精品伊人久久精品影视 | 一区二区三区在线免费观看 | 福利电影在线 | www97影院 | 天天干天天草 | 欧美一区二区三区的 | 欧美 中文字幕 | 欧美一区不卡 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 涩涩视频在线播放 | 国产成人影院 |