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

麻阳住房和城乡建设局网站四川二滩建设咨询有限公司网站

麻阳住房和城乡建设局网站,四川二滩建设咨询有限公司网站,在线crm网站,阿里云网站建设方案书模板11.1 动态类识别 11.1.1 自定义类型 C中的多态根据实际的对象类型调用对应的函数 #xff08;1#xff09;可以在基类中定义虚函数返回具体的类型信息 #xff08;2#xff09;所有的派生类都必须实现类型相关的虚函数 #xff08;3#xff09;每个类中的类型虚函数都需…11.1 动态类识别 11.1.1 自定义类型 C中的多态根据实际的对象类型调用对应的函数 1可以在基类中定义虚函数返回具体的类型信息 2所有的派生类都必须实现类型相关的虚函数 3每个类中的类型虚函数都需要不同的实现 使用虚函数进行动态类型识别的缺陷 1必须从基类开始提供类型虚函数 2所有派生类都必须重写类型虚函数 3每个派生类的ID必须唯一 示例代码 #include iostreamusing namespace std;class Parent { private:int a; public:enum {ID 0};virtual int getID(){return ID; } };class Child : public Parent { public:enum {ID 1};int array[102400];virtual int getID(){return ID;}};void f(Parent *p) {//Child *c (Child *)p; //派生类指针指向基类对象 //如果指针指向派生类对象可以转换指向基类对象不能转换if (p-getID() Child::ID) //如果成立说明指向派生类对象{Child *c (Child *)p;c-array[102400 - 1] 100;}else{cout 不能转换 endl;} }int main() {//Parent *p new Child;Parent *p new Parent;f(p);return 0; }运行结果 11.1.2 dynamic_cast 新的关键字 dynamic_cast 1dynamic_cast是C中的新型关键字 2dynamic_cast用于基类和派生类之间的转换 3dynamic_cast要求使用的目标类型是多态的 即要求所在类族至少有一个虚函数 用于指针转换时转换失败返回空指针 用于引用转换时转换失败将引发bad_cast异常 dynamic_cast的优势 1不用显示的声明和定义虚函数 2不用为类族中的每个类分配类型ID dynamic_cast的缺陷 只能用于有虚函数的类族 示例代码 #include iostreamusing namespace std;class Parent { private:int a; public:virtual void show(){} };class Child : public Parent { public:int array[102400];void show(){} };void f(Parent *p) {Child *c dynamic_castChild *(p); //如果p指向的是基类对象则转换失败转换失败返回NULLif (NULL c){cout 转换失败 endl;}else{cout 转换成功 endl;c-array[102400 - 1] 100;} }int main() {//Parent *p new Child;Parent *p new Parent;f(p);return 0; }运行结果 11.1.3 typeid C提供了typeid关键字用于动态获取类型信息 1typeid关键字返回对应参数的类型信息 2typeid关键字返回一个type_info类对象当typeid参数为NULL时抛出bad_typeid异常 3type_info类的使用需要包含typeinfo头文件typeid的使用 示例代码 #include iostream #include typeinfousing namespace std;class Parent { private:int a; public:virtual void show(){} };class Child : public Parent { public:int array[102400]; public:void show(){} };void f(Parent *p) {if (typeid(*p) typeid(Child)){cout 可以转换 endl;Child *c (Child *)p; //派生类指针指向基类对象c-array[102400 - 1] 100;}else if (typeid(*p) typeid(Parent)){cout 不能转换 endl;} }int main() {int a;char ch;Parent p1;Child c1;const type_info pa typeid(a); const type_info pch typeid(ch); const type_info pp1 typeid(p1); const type_info pc1 typeid(c1); cout pa.name() endl;cout pch.name() endl;cout pp1.name() endl;cout pc1.name() endl;//if (pa.name() i) // 不同编译器可以不一样不能这么写Parent *p new Parent;//Parent *p new Child;f(p);return 0; }运行结果 11.2 纯虚函数和抽象类 11.2.1 基本概念 抽象类 1含有纯虚函数的类 2抽象类不能用于直接创建对象实例可以声明抽象类的指针和引用 3可使用指向抽象类的指针支持运行时多态性 4派生类中必须实现基类中的纯虚函数否则它仍将被看作一个抽象类 示例代码 #include iostreamusing namespace std;class Parent //含有纯虚函数的类称为抽象类 抽象类不能创建对象 { public:void show(){cout this is parent endl;}virtual void print() 0; //纯虚函数 没有函数体 };class Child : public Parent { public:void print(){cout this is Child endl;} };int main() {//Parent pp;//pp.print();Parent *p new Child;p-print();return 0; }运行结果
http://www.hkea.cn/news/14393270/

相关文章:

  • 云计算存储网站建设安全中国开头的网站怎么做
  • 做菠菜网站多少钱wordpress根目录403
  • 做网站维护做邀请函用哪个网站好呢
  • 惠州建设工程交易网站sem优化师是做什么的
  • 国内手机网站建设门店销售管理系统
  • 网站建设网络推广柯wordpress自定义右键
  • 服饰网站建设怎么在百度建设一个网站
  • 国内常见响应式网站wordpress点击插件
  • 德州做名片的网站机械产品网络推广怎么做
  • 公司外文网站制作广广东网站建设
  • 南京我爱我家网站建设新村二手房建设工程教育网app
  • 中国移动网站备案管理系统不能用中国软件公司
  • 做网站 就上微赞网浙江省长兴县建设局网站
  • 建网站平台要多少钱潍坊做网站的企业
  • 网站建设项目投资测算桥下网站制作哪家好
  • 建网站软件 优帮云苏州有做网站的公司吗
  • 网站建设 沈阳一些网站是用什么颜色做的
  • 松原公司做网站的流程站长工具seo综合查询降级
  • 在本地做的网站怎么修改域名信息网站方案
  • php做购物网站详情页的代码做h5网站的公司
  • 密云做网站的文件外链
  • 社区网站 租用服务器还是只需要购买空间长沙网络开发公司
  • 做网站后有人抢注关键词网站开发流程视频
  • 一个网站的上线流程哪个网站做轴承外贸的人比较多
  • 官网设计报价鹤壁网站优化
  • html网站开发实战教程曰本免费一级a做爰视频网站
  • 网站建设费用都选网络营销型网站建设比较好
  • 免费黄页网站做物品租赁网站
  • 威海教育行业网站建设灯光设计师培训
  • 网站seo主管招聘WordPress优化手机端