当前位置: 首页 > news >正文

网站建设初步策划方案wordpress 4.8.6

网站建设初步策划方案,wordpress 4.8.6,漳州正规网站建设价格,网站更换关键词怎么做好4.5 运行时类型信息4.5.1 typeid和type_info4.5.2 dynamic_cast 4.5 运行时类型信息 运行时类型信息(Run-time Type Information,RTTI)提供了在程序运行时刻确定对象类型的方法,是面向对象程序语言为解决多态问题而引入的一种语言特性。由于…

    • 4.5 运行时类型信息
      • 4.5.1 typeid和type_info
      • 4.5.2 dynamic_cast

4.5 运行时类型信息

运行时类型信息(Run-time Type Information,RTTI)提供了在程序运行时刻确定对象类型的方法,是面向对象程序语言为解决多态问题而引入的一种语言特性。由于多态的要求,C++指针或引用可能与他们实际代表的类型不一致(如基类指针可以指向派生类对象),当将一个多态指针转换为其 实际指向类型对象时,就需要知道对象类型信息。

在C++中,用于支持RTTI的运算符有:dynamic_cast, typeid, type_info.

4.5.1 typeid和type_info

  • typeid操作符即可用于类型也可用于对象,返回typeinfo对象的常引用,用于表示类型信息
  • typeinfo类的成员函数name(),可以获取字符串形式的类型信息
#include <iostream>
#include <typeinfo>
using namespace std;int main(void){int i = 10;cout << typeid(i).name() << endl;cout << typeid(int).name() << endl;int* p1[10]; //指针数组  p1数组中存放10个元素 这10个元素都是int* 类型的int (*p2)[10]; //指针变量 p2指向数组类型的数据,数据是有10个元素的int型数组cout << typeid(p1).name() << endl;cout << typeid(p2).name() << endl;return 0;
}
myubuntu@ubuntu:~/lv19/cplusplus/dy05$ ./a.out 
i
i
A10_Pi
PA10_i
  • typeinfo类支持 “==” 和 “!=” 操作符,可直接用于类型相同与否的判断,如果类型之间存在多态的继承关系,typeid还可以利用多态的特性确定实际对象的类型
#include <iostream>
#include <typeinfo>
using namespace std;class A {
public:virtual void foo(void) {}
};class B : public A {
public:void foo(void) {}
};class C : public A {
public:void foo(void) {}
};void func(const A& a){if(typeid(a) == typeid(B)){ //判断创建的对象 是什么类型的cout << "B" << endl;} else if(typeid(a) == typeid(C)) {cout << "C" << endl;}
}int main(void) {B b;C c;func(b);func(c);return 0;
}
myubuntu@ubuntu:~/lv19/cplusplus/dy05$ ./a.out 
B
C

4.5.2 dynamic_cast

强制类型转换运算符,主要用于具有多态继承关系父子类指针或引用之间的显式转换。

语法格式:

dynamic_cast <目标类型> (表达式)
#include <iostream>
#include <typeinfo>
using namespace std;class Base {
public:virtual void foo(void) {}
};class Derived : public Base {
public:void foo(void) {}
};int main(void){Base *pb, b; //基类Derived *pd, d; //子类pd = &d;pb = pd; // Base * <------- Derived * 向上造型 隐式转换  编译时完成 这种转换不安全 后期排查错误不方便pb = dynamic_cast<Base *>(&d); //显示转换 向上造型 运行时完成的return 0;
}

向下造型时,动态类型转换会对所需转换的基类指针或引用做检查,如果其目标确实为期望得到的子类类型的对象,则转换成功,否则转换失败

#include <iostream>
#include <typeinfo>
using namespace std;class Base {
public:virtual ~Base() {}
};class Derived : public Base {
public:void foo(void) {cout << "Derived foo()" << endl;}
};int main(void){Base *pb, b;Derived *pd, d;pb = &b;/** 语法上不报错:具有父子关系 具有多态特性* 该转换不合理:在运行期间完成转换 转换失败 C++认为不安全* */pd = dynamic_cast<Derived *>(pb);if(pd)	cout << "ok" << endl;else	cout << "error" << endl;//	pd = reinterpret_cast<Derived *>(pb);
//	pd = (Derived *)pb; //C风格强转 可以编译通过
//	pd->foo(); //有问题,pd 已经转换成基类的类型了  基类中没有foo()函数pb = &d; //向上造型 缩小了访问范围pd = dynamic_cast<Derived *>(pb); //编译通过 也是合理转换if(pd)	cout << "ok" << endl;else	cout << "error" << endl;return 0;
}
http://www.yayakq.cn/news/931272/

相关文章:

  • 网站首页怎么制作网站怎么做背景图片
  • 对百度网站进行分析wordpress文章增加新数据库
  • 网站和网络有什么区别宿迁网站建设开发
  • 湖南营销型网站建设网站开发合同补充协议
  • 网站技术防护建设情况怎么自做网站
  • 舟山建设管理网站做网站项目收获
  • 合作行业网站建设xampp 做网站
  • 做亚马逊有看数据的网站吗猎头公司logo
  • ui手机app界面设计wordpress访问优化插件
  • 顺德网站制作案例价格陕西交通建设集团信息网站
  • 网站优化关键词是怎么做的成品人和精品人的区别在哪里
  • 全球最大源码共享网站网站设计经典案例
  • 精品课程网站建设 碧辉腾乐未来分发网下载app
  • 建设部指定发布招标信息网站网上购物平台排行
  • 网站建设相关ppt德州口碑好的网站制作公司
  • 莱芜新闻头条seo优化包括哪些
  • 网站建设的域名的选择手机设计软件下载
  • 电影网站域名需要备案石家庄网站建设销售电话
  • 成都网站优化步骤餐饮营销型网站案例分析
  • 网站运营编辑谷歌关键词查询工具
  • 南京做网站哪家最好阜阳讯拓网站建设
  • 江苏省泰州市建设局官方网站苏州钻木网络科技有限公司
  • 创建免费论坛的10个网站专业网站建设服务商
  • 漯河网站建设哪家如何做平台推广
  • 模板网站有后台么软件技术专业难学吗
  • 外贸建站软件html网站设计模板下载
  • 网站开发周期安排天正电气网站建设
  • 长安公司网站建设wordpress百度经验
  • 网站导航条设计wordpress发布文章关键词
  • 网站空间排行榜可以免费发布信息的网站有哪些