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

如何做网站优化推广/游戏推广文案

如何做网站优化推广,游戏推广文案,北京工作室网站建设,dedecms源代码生成网站全过程目录 C语言中的类型转换 C强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast 延伸问题 RTTI(了解) C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或…

目录

C语言中的类型转换

C++强制类型转换

static_cast

reinterpret_cast

 const_cast

 dynamic_cast

延伸问题 

 RTTI(了解)


 

C语言中的类型转换

 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与
接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型
转换和显式类型转换。
1. 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败
2. 显式类型转化:需要用户自己处理

void Test ()
{
int i = 1;
// 隐式类型转换
double d = i;
printf("%d, %.2f\n" , i, d);
int* p = &i;
// 显示的强制类型转换
int address = (int) p;
printf("%x, %d\n" , p, address);
}

缺陷:
转换的可视性比较差,所有的转换形式都是以一种相同形式书写,难以跟踪错误的转换


C++强制类型转换

 标准C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符:
static_cast、reinterpret_cast、const_cast、dynamic_cast

static_cast

 static_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用
static_cast,但它不能用于两个不相关的类型进行转换。用于意义相近的类型。

注意这里的格式,尤其是括号的位置。

 C语言中可以这样转换,而C++ static_cast却不行,因为 static_cast主要是用做隐式类型的转换,C语言中把这种转换叫强制类型转换

这种不相关的类型应该用 reinterpret_cast来进行转换

reinterpret_cast

 reinterpret_cast操作符通常为操作数的位模式提供较低层次的重新解释,用于将一种类型转换
为另一种不同的类型

 const_cast

 const_cast最常用的用途就是删除变量的const属性,方便赋值。

这里把const int *转为int *,这样可以间接修改a,如果直接修改a会报错,这里的a并没有被放到常量区,而是在栈上,我们可以通过拿到a的地址对a进行修改。

我们可以看到a是2,*p是3 

调试窗口下俩个却都是3,这是因为a确实在内存中被修改成了3,但是编译器在读取a的时候不一定去内存中去读取,而是在寄存器中读取,虽然内存中是3,但寄存器中是2,所以这里会打印2

如果想去读取内存中的a,我们加关键字 volatile

注:所有的转换都会产生临时变量,临时变量具有常性。 

这里发生了隐式类型转换,如果要对其进行引用就要加const,因为临时变量具有常性

 dynamic_cast

dynamic_cast用于将一个父类对象的指针/引用转换为子类对象的指针或引用(动态转换)
向上转型:子类对象指针/引用->父类指针/引用(不需要转换,赋值兼容规则)

向上转不是隐式类型转换,这是语法天然支持的


向下转型:父类对象指针/引用->子类指针/引用(用dynamic_cast转型是安全的),子类指针/引用转子类指针/引用是安全的,子类指针/引用转父类指针/引用是不安全的
注意:
1. dynamic_cast只能用于父类含有虚函数的类

2. dynamic_cast会先检查是否能转换成功,能成功则转换,不能则返回0

 注意父类对象无论如何都不允许转为子类对象

 父类指针有可能指向父类,也有可能指向子类,这里fun函数形参pa可能指向父类也可能指向子类,如果pa指向父类,我们将其转换成子类此时会有风险,父类只有_a,父类指针只能访问4个字节空间,子类还有_b,若转为子类,此时指针就会越界,指针越界后就能访问_b,但是对于父类来说_b不属于自己,所以会有隐患。

 若是父类指针,该指针若指向子类,该指针会受到父类类型的束缚,该指针只能访问到父类的一部分,不能访问子类,但是可以转回子类,这种转换就可以用dynamic_cast

如果pa是指向子类,那么可以转换,转换表达式返回正确的地址。

如果pa是指向父类,那么不能转换,转换表达式返回nullptr。

pa此时是子类指针,转换成功

 pa是父类指针,转换失败

 如果用C语言的强制类型转换,这里都是转换成功,但是遇到父类指针就会有风险,会发生指针越界

延伸问题 

 这里第一组数据不一样是因为发生了切片,但是后面俩组数据ptr1=ptr2,ptr3=ptr4,这是为什么?

 这是因为类型转换后不再发生切片,ptr1和ptr2都指向开头这块地址,ptr3和ptr4也同理

如果不是虚函数dynamic_cast就无法使用

注意
强制类型转换关闭或挂起了正常的类型检查,每次使用强制类型转换前,程序员应该仔细考虑是
否还有其他不同的方法达到同一目的,如果非强制类型转换不可,则应限制强制转换值的作用
域,以减少发生错误的机会。强烈建议:避免使用强制类型转换
 

 RTTI(了解)

 RTTI:Run-time Type identification的简称,即:运行时类型识别。
C++通过以下方式来支持RTTI:
1. typeid运算符
2. dynamic_cast运算符
3. decltype



 

相关文章:

C++——类型转换

目录 C语言中的类型转换 C强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast 延伸问题 RTTI(了解) C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或…...

vue3:生命周期(onErrorCaptured)

一、背景 当项目如果发生报错,影响程序体验。如果能以捕获的方式得到错误信息,而且还能定位问题,这样就好了,本文介绍onErrorCaptured实现我们想要的效果。 vue2:errorCaptured。使用与vue3同理。 vue3:…...

vue过滤器

vue 过滤器 对要显示的数据进行特定格式化之后再显示 注册过滤器 Vue.filter(name,callback)new Vue({filters:{}}) 使用过滤器 {{ name | 过滤器名 }}v-band:属性“name | 过滤器名” 局部过滤器 <p>{{time | timeFormater }}</p> <!-- 过滤器可接受额外参…...

I/O模型

写在前面 前面聊完了IO方式, 也就意味着网络数据的收发通道是建立起来了。但业务场景中, 通道本身是不会发送数据的。在常见的网络应用中, server端会创建多个链接以服务更多client, 同时要求各个client尽可能互不影响。这是I/O模型(也就是IO方式线程模型)要解决的问题。由于加…...

前端必备技术之——AJAX

简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff0c;就是异步的 JS 和 XML(现在已经基本被json取代)。通过 AJAX 可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff1a;无刷新获取数据。AJAX 不是新的编程语言&#xff0c;而是一种将现有的标准组…...

MySQL数据库 各种指令操作大杂烩(DML增删改、DQL查询、SQL...)

文章目录前言一、DML 增删改添加数据修改数据删除数据二、DQL 查询基本查询条件查询聚合函数(count、max、min、avg、sum)分组查询(group by)排序查询(order by)分页查询(limit)DQL 语句练习三、SQLDCL 权限控制约束案例多表查询事务存储引擎字符串函数数值函数日期函数流程函数…...

Java分布式全局ID(一)

随着互联网的不断发展&#xff0c;互联网企业的业务在飞速变化&#xff0c;推动着系统架构也在不断地发生变化。 如今微服务技术越来越成熟&#xff0c;很多企业都采用微服务架构来支撑内部及对外的业务&#xff0c;尤其是在高 并发大流量的电商业务场景下&#xff0c;微服务…...

算法分析与设计之并查集详解

算法分析与设计之并查集1.前言2.并查集的基础2.1.关于动态连通性2.2.动态连通性的应用场景&#xff1a;2.3.对问题建模&#xff1a;2.4.建模思路&#xff1a;2.5.API2.7.Quick-Find算法&#xff1a;2.8.Quick-Union算法&#xff1a;3. 并查集的应用1.前言 本文主要介绍解决动态…...

Linux - 内存性能评估

文章目录概述free 命令指定的时间段内不间断地监控内存的使用情况通过watch与free相结合动态监控内存状况vmstat命令监控内存“sar –r”命令组合小结概述 内存的管理和优化是系统性能优化的一个重要部分&#xff0c;内存资源的充足与否直接影响应用系统的使用性能。在进行内存…...

00后初中辍学,转行程序员后,终于找到了女朋友

大家好&#xff0c;这里是程序员晚枫&#xff0c;今天继续分享我们的读者投稿&#xff0c;如需投稿赚稿费的朋友&#xff0c;请在后台私信我&#xff1a;投稿。下面我们进入正文吧~ 我是一位 00 后&#xff0c;从初一辍学&#xff0c;到目前为止已有 8 年的时间了&#xff0c;在…...

“Vue学习注意事项:掌握核心特性,注意性能优化和第三方库的使用“

Vue是一款易学易用的JavaScript框架&#xff0c;它可以帮助开发者构建动态、高性能的用户界面。Vue的核心概念包括数据绑定、指令、计算属性和组件化&#xff0c;学习Vue需要注意以下几个点&#xff1a;1. 理解Vue的基本概念和用法Vue的基本概念包括模板、组件、数据绑定、计算…...

计算机网络协议详解(二)

文章目录&#x1f525;HTTP协议介绍&#x1f525;HTTP协议特点&#x1f525;HTTP协议发展和版本&#x1f525;HTTP协议中URI、URL、URN&#x1f525;HTTP协议的请求分析&#x1f525;HTTP协议的响应分析&#x1f525;MIME类型&#x1f525;HTTP协议介绍 HTTP协议介绍 什么是超…...

【CSS】CSS 复合选择器 ② ( 子元素选择器 | 交集选择器 )

文章目录一、子元素选择器1、语法说明2、代码分析3、代码示例二、交集选择器1、语法说明2、代码示例一、子元素选择器 1、语法说明 子元素选择器 可以选择 某个基础选择器 选择出的 元素组 的 直接子元素 ( 亲儿子元素 ) 中 使用基础选择器 选择 元素 ; 子元素选择器语法 : 父选…...

Java集合专题

文章目录框架体系CollectionListArrayListLinkedListVectorSetHashSetLinkedHashSetTreeSetMapHashMapHashtableLinkedHashMapTreeMapPropertiesCollections框架体系 1、集合主要分了两组&#xff08;单列集合&#xff0c;双列集合&#xff09; 2、Collection接口有两个重要的子…...

双重差分法(DID):算法策略效果评估的利器

文章目录算法评估DID原理简单实例Python实现算法评估 作为一名算法出身的人&#xff0c;曾长期热衷于算法本身的设计和优化。至于算法的效果评估&#xff0c;通常使用公开数据集做测试&#xff0c;然后对比当前已公开的结果&#xff0c;便可得到结论。 但是在实际落地过程中&…...

【pytorch】使用mixup技术扩充数据集进行训练

目录1.mixup技术简介2.pytorch实现代码&#xff0c;以图片分类为例1.mixup技术简介 mixup是一种数据增强技术&#xff0c;它可以通过将多组不同数据集的样本进行线性组合&#xff0c;生成新的样本&#xff0c;从而扩充数据集。mixup的核心原理是将两个不同的图片按照一定的比例…...

面向对象设计模式:创建型模式之单例模式

1. 单例模式&#xff0c;Singleton Pattern 1.1 Definition 定义 单例模式是确保类有且仅有一个实例的创建型模式&#xff0c;其提供了获取类唯一实例&#xff08;全局指针&#xff09;的方法。 单例模式类提供了一种访问其唯一的对象的方式&#xff0c;可以直接访问&#xf…...

IsADirectoryError: [Errno 21] Is a directory: ‘.‘

项目场景&#xff1a; 基于YOLOv5的室内场景识别 工具&#xff1a;colab 问题描述 Traceback (most recent call last): File “train.py”, line 630, in main(opt) File “train.py”, line 494, in main d torch.load(last, map_location‘cpu’)[‘opt’] File “/usr/…...

判断三角面片与空间中球体是否相交

文章目录一、问题描述二、解题思路​ 在做项目时遇到了一个数学问题&#xff0c;即&#xff0c;如何判断给定一个三角面片与空间中某个球体有相交部分&#xff1f;这个问题看似简单&#xff0c;实际处理起来需要一些方法和手段。一、问题描述 已知空间中球体的球心位置center&a…...

继承下的缺省参数值和访问说明符

前言 本文将介绍 C 继承体系下&#xff0c;函数缺省参数的绑定和函数访问说明符的绑定。这些奇怪的问题实际上不应在我们的代码中出现&#xff0c;但它们能帮助我们理解 C 的动态绑定和静态绑定&#xff0c;也能帮助我们更好的通过面试。 缺省参数值 先来看一段代码&#xf…...

Spring核心模块—— BeanFactoryPostProcessorBeanPostProcessor(后处理器)

后置处理器前言Spring的后处理器BeanFactoryPostProcessor&#xff08;工厂后处理器&#xff09;执行节点作用基本信息经典场景子接口——BeanDefinitiRegistryPostProcessor基本介绍用途具体原理例子——注册BeanDefinition使用Spring的BeanFactoryPostProcessor扩展点完成自定…...

产品新人如何培养产品思维?

什么是产品思维&#xff1f;其实很难定义&#xff0c;不同人有不同的定义。有的人定义为以用户为中心打磨一个完美体验的产品&#xff1b;有的定义为从需求调研到需求上线各个步骤需要思考的点&#xff0c;等等。本文想讨论的产品思维是&#xff1a;怎么去发现问题&#xff0c;…...

「兔了个兔」CSS如此之美,看我如何实现可爱兔兔LOADING页面(万字详解附源码)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…...

【Java】阻塞队列 BlcokingQueue 原理、与等待唤醒机制condition/await/singal的关系、多线程安全总结

在实习过程中使用阻塞队列对while sleep 轮询机制进行了改造&#xff0c;提升了发送接收的效率&#xff0c;这里做一点点总结。 自从Java 1.5之后&#xff0c;在java.util.concurrent包下提供了若干个阻塞队列&#xff0c;BlcokingQueue继承了Queue接口&#xff0c;是线程安全…...

【水下图像增强】Enhancing Underwater Imagery using Generative Adversarial Networks

原始题目Enhancing Underwater Imagery using Generative Adversarial Networks中文名称使用 GAN 增强水下图像发表时间2018年1月11日平台ICRA 2018来源University of Minnesota, Minneapolis MN文章链接https://arxiv.org/abs/1801.04011开源代码官方&#xff1a;https://gith…...

Maven专题总结—详细版

第一章 为什么使用Maven 获取jar包 使用Maven之前&#xff0c;自行在网络中下载jar包&#xff0c;效率较低。如【谷歌、百度、CSDN…】使用Maven之后&#xff0c;统一在一个地址下载资源jar包【阿里云镜像服务器等…】 添加jar包 使用Maven之前&#xff0c;将jar复制到项目工程…...

华为OD机试真题Java实现【字符串加密】真题+解题思路+代码(20222023)

字符串加密 题目 给你一串未加密的字符串str, 通过对字符串的每一个字母进行改变来实现加密, 加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量, 数组a前三位已经赋值:a[0]=1,a[1]=2,a[2]=4。 当i>=3时,数组元素a[i]=a[i-1]+a[i-2]+a[i-3], 例如:原文 abcde …...

「Python 基础」函数与高阶函数

文章目录1. 函数调用函数定义函数函数的参数递归函数2. 高阶函数map/reducefiltersorted3. 函数式编程返回函数匿名函数装饰器偏函数1. 函数 函数是一种重复代码的抽象方式&#xff0c;Python 内建支持的一种封装&#xff1b; 调用函数 调用一个函数&#xff0c;需要知道函数…...

DIV内容滚动,文字符滚动标签marquee兼容稳定不卡

marquee(文字滚动)标签 marquee简介 <marquee>标签,是成对出现的标签,首标签<marquee>和尾标签</marquee>之间的内容就是滚动内容。 <marquee>标签的属性主要有behavior、bgcolor、direction、width、height、hspace、vspace、loop、scrollamount、scr…...

SpringBoot_第五章(Web和原理分析)

目录 1&#xff1a;静态资源 1.1&#xff1a;静态资源访问 1.2&#xff1a;静态资源源码解析-到WebMvcAutoConfiguration 2&#xff1a;Rest请求绑定&#xff08;设置put和delete&#xff09; 2.1&#xff1a;代码实例 2.2&#xff1a;源码分析到-WebMvcAutoConfiguratio…...