运行时类型识别
来源:互联网 发布:centos测速 编辑:程序博客网 时间:2024/05/21 11:20
1、通过运行时类型识别(RTTI),程序能够使用基类的指针或引用来检索这些指针或引用所指对象的实际派生类型。
1)typeid操作符,返回指针或引用所指对象的实际类型。
2)dynamic_cast操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用。
2、dynamic_cast操作的形式如下:
dynamic_cast< Type& >(val)
Type是转换的目标类型,而val是基类类型的对象。
3、typeid表达式形如:
typeid(e)
e是任意表达式或者是类型名
只有当typeid的操作数是带虚函数的类类型的对象的时候,才返回动态类型信息。如果操作数不是类类型或者是没有虚函数的类,则typeid操作符指出操作数的静态类型。
4、类成员的指针:
如:class Screen{
public:
typedef std::string::size_type index;
char get() const;
char get(index ht,index wd) const;
private:
std::string contents;
index cursor;
index height,width;
};
contents的完全类型是”Screen类的成员,其类型是std::string“,即指contents的指针的完全类型是”指向std::string类型的Screen类成员的指针“,这个类型可写为
string Screen::*
可以将指向Screen类的string成员的指针定义为
string Screen::*ps_Screen;
可以用contents的地址初始化ps_Screen:
string Screen::*ps_Screen = &Screen::contents;
定义成员函数的指针:
如:可引用不接受形参的get版本的Screen成员函数的指针具有如下类型:
char (Screen::*)() const
使用类成员的指针:
1)成员指针解引用操作符(.*)从对象或引用获取成员。
2)成员指针箭头操作符(->*)通过对象的指针获取成员。
如:char (Screen::*pmf) const = &Screen::get;
Screen myScreen;
char c1 = (myScreen.*pmf)();
Screen *pScreen = &myScreen;
char c2 = (pScreen->*pmf)();
- 运行时类型识别
- 运行时类型识别
- 运行时类型识别
- 运行时类型识别
- 运行时类型识别
- 运行时类型识别
- 运行时类型识别
- 运行时类型识别
- 运行时类型识别
- 运行时类型识别(RTTI)
- RTTI 运行时类型识别
- 运行时类型识别(RTTI)
- 运行时类型识别RTTI
- RTTI 运行时类型识别
- RTTI 运行时类型识别
- RTTI 运行时类型识别
- RTTI 运行时类型识别
- RTTI运行时类型识别
- 【Objective-C】05-OC对象中类方法和对象方法的比较
- ubuntu 安装 vim 的问题
- iOS推送证书制作以及.pem文件的转换
- 剑指offer系列源码-数字在排序数组中出现的次数
- can't open /dev/ttyAMA0: No such device or address
- 运行时类型识别
- js 实现 复选框全选与全不选
- ubuntu下安装vmware-tools 实现linux与windows的互相复制与粘贴
- LeetCode OJ 之 Longest Palindromic Substring (最长回文子串)
- Eclipse Luna Release (4.4.0)中如何用Maven创建web项目
- Android开发—Navigation Drawer(侧边栏菜单实现)
- 多线程操作UI
- springmvc用户注册,登陆的实现
- 国外程序员整理的机器学习资源大全