运行时类型识别

来源:互联网 发布: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)();



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子一看书就哭怎么办 我不想读大专了怎么办 一年级的小孩不爱学习怎么办 高中的孩子不爱学习怎么办 9个月宝宝肠胃不好怎么办 孩子高烧过后干呕不爱吃饭怎么办 母乳涨奶发烧了怎么办 涨奶发烧了怎么办啊 2岁宝贝不吃饭怎么办 4个月的婴儿厌食怎么办 2个月婴儿厌食怎么办 3个月宝宝厌奶怎么办 没胃口吃不下饭怎么办 小孩吃多了积食怎么办 孩子吃撑了难受怎么办 卵巢早衰月经量少怎么办 7岁孩吃饭少消瘦怎么办 宝宝3岁不吃饭怎么办 小孩吃多了吐了怎么办 6岁儿童越来越瘦怎么办 7岁儿童不吃饭怎么办 天热宝宝不好好吃饭怎么办 天热宝宝不爱吃饭怎么办 天热宝宝不想吃饭怎么办 夏天天热宝宝不爱吃饭怎么办 3岁宝宝吃饭不香怎么办 胃ca吃饭反胃没食欲怎么办 12岁儿童脸色发黄怎么办 胃饿 但是没食欲不想吃饭怎么办 牙缝大经常塞西怎么办 吃肉老是塞牙缝怎么办 宝宝光喝奶粉不吃饭怎么办 九个月宝宝缺维c怎么办 九个月宝宝缺维d怎么办 9个月大宝宝缺锌怎么办 三周岁宝宝不爱吃饭怎么办 一周岁宝宝不爱吃饭怎么办 两岁半宝宝不自己吃饭怎么办 3岁宝宝不会吃饭怎么办 节食减肥胃疼怎么办呢 减肥不吃饭胃疼怎么办