青岛网架公司新乡网站关键字优化

web/2025/9/26 20:13:35/文章来源:
青岛网架公司,新乡网站关键字优化,抖音小程序广告怎么跳过,沈阳做网络推广的公司12、虚函数的应用、虚析构函数 运行时类型信息(RTTI)动态类型转换(dynamic_cast)typeid操作符 虚 析构函数空虚析构函数 一个类中#xff0c;除了构造函数和静态成员函数外#xff0c;任何函数都可以被声明为虚函数 运行时类型信息(RTTI) 动态类型转换(dynamic_cast) 用于… 12、虚函数的应用、虚析构函数 运行时类型信息(RTTI)动态类型转换(dynamic_cast)typeid操作符 虚 析构函数空虚析构函数 一个类中除了构造函数和静态成员函数外任何函数都可以被声明为虚函数 运行时类型信息(RTTI) 动态类型转换(dynamic_cast) 用于将基类类型的指针或引用转换为其子类类型的指针或引用前提是子类必须从基类多态继承 (即基类包含至少一个虚函数)动态类型转换会对所需转换的基类指针或引用做检查如果其指向的对象的类型与所要转换的目标类型一致则转换成功否则转换失败。针对指针的动态类型转换以返回空指针(NULL)表示失败针对引用的动态类型转换以抛出bad_cast异常表示失败 // 动态类型转换 基类类型指针转换为子类类型指针 // 基类类型引用转换为子类类型引用 #include iostream using namespace std;class A { // 编译器根据A类信息将制作一张虚函数表 A...|A::foo的地址 public:virtual void foo(){} };class B : public A { // 编译器根据B类信息将制作一张虚函数表 B...|A::foo的地址 };class C : public B { // 编译器根据C类信息将制作一张虚函数表 C...|A::foo的地址 };class D {}; // 编译器根据D类信息不制作虚函数表int main( void ){B b; // |虚表指针| -- 编译器根据B类信息制作的虚函数表A* pa b; // B* -- A* (子类类型指针 -- 基类类型指针)cout ---------------------dynamic_cast 运行期间做的转换----------------------- endl; B* pb dynamic_castB*(pa); // pa--b对象所占内存空间--虚表指针 -- 编译器根据B类信息制作的虚函数表-Bcout A* pa -- B* pb: pb endl;C* pc dynamic_castC*(pa); // pa--b对象所占内存空间--虚表指针 -- 编译器根据B类信息制作的虚函数表-Bcout A* pa -- C* pc: pc endl;D* pd dynamic_castD*(pa); // pa--b对象所占内存空间--虚表指针 -- 编译器根据B类信息制作的虚函数表-Bcout A* pa -- D* pd: pd endl;cout ---------------------static_cast 编译期间做的转换----------------------- endl; pb static_castB*(pa); // 即合理且安全 A* --B*的反向 可以隐式转换cout A* pa -- B* pb: pb endl;pc static_castC*(pa); // 有风险 A*--C*的反向 可以隐式转换cout A* pa -- C* pc: pc endl;// pd static_castD*(pa); // 不合理 A*--D*的反向 不可以隐式转换 // cout A* pa -- D* pd: pd endl;return 0; } typeid操作符 #include typeinfo返回type info类型对象的常引用 type info类的成员函数name()返回类型名字符串type info类支持“”和“!”操作符可直接用于类型相同与否的判断 当其作用于基类类型的指针或引用的目标对象时 若基类不包含虚函数 typeid所返回类型信息由该指针或引用本身的类型决定若基类包含至少一个虚函数即存在多态继承typeid所返回类型信息由该指针或引用的实际目标对象的类型决定 // typeid操作符 -- 获取对象的类型信息 // 无法获取对象常属性信息 #include iostream #include typeinfo using namespace std;class A { // 编译器根据A类信息将制作一张虚函数表 A...|A::foo的地址 virtual void foo(){} };class B : public A { // 编译器根据B类信息将制作一张虚函数表 B...|A::foo的地址 };int main( void ){B b;// |虚表指针| -- 编译器根据B类信息制作的虚函数表A* pa b;A ra b;cout pa指针的目标对象的类型 typeid(*pa).name() endl;// pa-b对象所占内存空间--虚表指针--B类虚函数表--Bcout ra引用的目标对象的类型 typeid(ra).name() endl;// ra-b对象所占内存空间--虚表指针--B类虚函数表--Bint m;const type_info rty typeid(m);// 1. 获取m的类型信息(类名、类大小、类版本...)// 2. 创建一个type_info类对象// 3. 将获取到的m的类型信息保存到type_info对象的私有成员变量中// 4. 返回type_info类对象的常引用string rn rty.name();cout m的类型 rn endl;const int n 10;cout n的类型 typeid(n).name() endl;cout (typeid(m) typeid(n)) endl;cout (typeid(m)!typeid(n)) endl;return 0; } 虚 析构函数 delete一个基类指针 (指向子类对象 实际被调用的仅仅是基类的析构函数 基类的析构函数只负责析构子类对象中的基类子对象 基类的析构函数不会调用子类的析构函数 在子类中分配的资源将无法得到释放 如果将基类的析构函数声明为虚函数那么实际被调用的将是子类的析构函数 子类的析构函数将首先释放子类对象自己的成员然后再调用基类的析构函数释放该子类对象的基类部分最终实现完美的资源释放 // 虚析构函数 -- delete一个基类类型指针(指向子类对象),能够正确的调用子类的析构函数 #include iostream #include fcntl.h #include unistd.h using namespace std;class A{ public:A():m_a(open(./file,O_CREAT | O_RDWR, 0644)){//【int m_a open(..);】定义m_a,初值为文件描述符 --文件表等内核信息(动态资源)cout A()被调用 -- 打开file文件 endl;}virtual ~A(){ // 虚析构函数close(m_a);cout ~A()被调用 -- 关闭file文件 endl;// 释放m_a本身所占内存空间} private:int m_a; }; class B : public A{ public:B():m_b(open(./cfg,O_CREAT | O_RDWR, 0644)){//【A();】定义基类子对象利用基类子对象.A()//【int m_b open(...);】定义m_b,初值为文件描述符--文件表等内核信息(动态资源)cout B()被调用 -- 打开cfg文件 endl;}~B(){ // 虚析构函数close(m_b);cout ~B()被调用 -- 关闭cfg文件 endl;// 对于基类子对象利用基类子对象.~A()// 释放m_b/基类子对象本身所占内存空间} private:int m_b; };int main( void ){A* p new B; // 定义B堆对象利用B类堆对象.B()delete p; // p-析构函数(~B()) 释放B类堆对象本身所占内存空间return 0; } 空虚析构函数 没有分配任何动态资源的类无需定义析构函数没有定义析构函数的类编译器会为其提供一个缺省析构函数但缺省析构函数并不是虚函数为了保证delete一个指向子类对象的基类指针时能够正确调用子类的析构函数就必须把基类的析构函数定义为虚函数即使它是一个空函数任何时候为基类定义一个虚析构函数总是无害的 一个类中除了构造函数和静态成员函数外任何函数都可以被声明为虚函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一键注册所有网站杭州职称评审系统网站

文章目录 前言一、什么是 min period?二、为什么检查 min period?三、如何设置 min period?四、如何检查 min period?五、如何修复 min period?总结 前言 我们在实际设计中可能会碰到这种情况,如果我们的m…

哪家网站设计公司好app软件开发的费用设计

由于I / O单元和模块的布放已经在布图规划时完成,因此布局的剩余任务主要是对标准单元的布局。布局方案在布图规划时就已经做了决定,要么选择展平式布局,要么就是层次化布局。 一、布局目标 布局的目标也即布局内容实施之后所要达到的预期值…

建站网站图片不显示专门网站建设

在Ubuntu中使用CSDN复制的代码时,可能会出现\u200的符号,这个符号会影响代码的编译和运行,因此需要找到一种快速删除这种符号的方法。 通过搜索找到了一种替换为空的删除方式,笔者编写了一个适用于Rust的shell脚本,需要…

手机 dns 国外网站鼓楼区建设局网站

ARM v8 Cortex R52内核 02 程序模型 Programmers Model 2.1 关于程序模型 Cortex-R52处理器实现了Armv8-R架构。这包括: 所有的异常级别,EL0-EL2。 每个异常级别下的AArch32执行状态。 T32和A32指令集,其中包括: 浮点运算。 …

win2003怎么做网站微小店网站建设官网

一、前言 开发提供数据的WebApi服务,最重要的是数据的安全性。那么对于我们来说,如何确保数据的安全将会是需要思考的问题。在ASP.NET WebService服务中可以通过SoapHead验证机制来实现,那么在ASP.NET WebApi中我们应该如何保证我们的接口安全…

搭建网站是什么静态网站开发基础

实验室开放项目实验报告 实验名称:实验一输入输出格式 实验目的:熟练掌握程序设计竞赛中通常采用的输入输出格式和掌握不同格式输入输出数据的处理方法 实验内容: 在本地电脑中新建一个文件夹,用于存放C源程序,文件…

一元购物网站建设江苏建设监理网站

实现方案 直接依赖 这种方式实现简单,但是耦合太严重,不方便维护与开发,当工程逐渐增大模块逐渐增多,依赖关系会非常复杂,不推荐这种方式。 事件或广播通信 EventBus: 我们非常熟悉的事件总线型的通信框…

商城网站制作深圳网站制作郑州软件开发学校

以下内容以本人遇到的真实问题为例,从找到加装固态硬盘后出现黑屏及蓝屏的原因,到成功解决问题,请各位看官听我娓娓道来,也希望为遇到同样问题的广大网友拨云见日,废话不多说,走起……一、问题描述:1. 背景…

淄博网站建设网站推广网络推广好的公司

题目 题目链接 题意 据说这道题要用一道叫做LCT的数据结构,然而我不会。。。 一排有n个弹簧装置,从第ii个可一往后跳k[i]" role="presentation" style="position: relative;">k[i]k[i]步。 修改:修改某个位…

南通网站外包wordpress文档案例

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?( ) A. 1 B. 2 C…

长沙公众号开发合肥seo优化

name input("请输入你的名字:") age input("请输入你的年龄:") print("我的名字是:"name" 年龄是:"age) #print(name) #print(age) 这是在本地调试的结果。因为程序是在远程服务器上执…

学做窗帘要下载哪个网站做软件的公司网站有哪些

一、 数据查看让我们先来回顾一下表格的基本构成,最上面的为表头,横为行,纵为列,内容区每一组展示数据区域为单元格。 表格的设计,虽然看似简单,但是作为用户最常用的组件之一,我们需要对视觉和…

上传网站标志唐山市住房和城乡建设局官方网站

前言 最近在学习Python爬虫的知识,既然眼睛会了难免忍不住要实践一把。 不废话直接上主题 代码不复杂,简单的例子奉上: import requests from lxml import etreecookie 浏览器F12网络请求标头里有 user_agent 浏览器F12网络请求标头里有…

企业网站一般用什么框架做网站策划主要做什么工作

网上下载源码包 wget http://网址 如果没有wget yum install -y wget建议下载下来的源码包,统一放到/usr/local/scr/下,方便维护管理养成查看INSTALL和README文档的习惯,内有软件安装方法和详细信息。1. ./configure --prefix/usr/l…

网站页面设计报价模板找大学生做网站

网上教程一大堆,我这边就不再赘述废话了 思路方法: 1,以四个为一组,最终的内存所占结果必须是四的倍数 2,优先考虑四的整数倍,之后再考虑内存空间问题 struct Beyond{int a;char b;short c;}; int mai…

电商网站有哪些类型住房建设部官方网站

文章目录 直接定义nn.Sequential(), 然后append(),最后直接net(),少写很多forward,适合直连式网络 直接定义nn.Sequential(), 然后append(),最后直接net(),少写很多forward,适合直连式网络 代码来源:https://github.com/zshhans/MSD-Mixer/b…

浙江建设局网站做站群的网站要备案吗

文章目录 1. Tomcat的安装与使用1.1 Tomcat安装1.2 Tomcat的启动1.3 Tomcat部署前端页面 2. Servlet2.1 Servlet是什么2.2 第一个Servlet程序2.3 常见错误 1. Tomcat的安装与使用 1.1 Tomcat安装 在浏览器中搜索Tomcat,打开官方网页.Tomcat官网 点击下载Tomcat8. 点击下载压…

网站改版好吗wordpress php7 500

哈希碰撞 哈希碰撞是指找到两个不一样的值,它们的哈希值却相同 假设哈希函数的取值空间大小为k ,计算次数为n 先算每个值不一样的概率P’ 所以至少两个值相同(即存在哈希碰撞)的概率P为 生日悖论 假设班里有50个人,求班里至少两个人相同…

网站 平台建设情况介绍软件著作权怎么写

目录题解待更新第一题:组队题目描述做为篮球队教练,你须要从如下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容。每位球员担任 1 号位至 5 号位时的评分以下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大多是多少&am…

董家渡街道网站建设网页设计做军事网站的感想

C. 奇奇怪怪的魔法阵 题意: n个点m条边,定义集合S为独立集,当且仅当任意x,y∈S,x与y之间没有边。空集也是独立集 现在对于每一个点的集合T,有多少子集为独立集 设N0,1,…,n-1,AT∑S⊂T[S是独立集]A_{T}\sum_{S⊂T}[S…