static_cast<type_name>(experssion)

news/2024/11/8 8:55:43/

C++四种类型转换方式

C语言类型转换不适用于C++,因此出现了新的类型转换。或者说C语言的强转不安全,没有安全检查。

1.static_cast(expression)

将表达式转换为type_name类型,在编译时使用类型信息转换;但没有运行时类型检查保证转换的安全性:适用范围

1)用于基本类型的转换,如整型之间

#include<iostream>
using namespace std;
enum Week{sunday=0,mondey=1};
int main(){char ch = 'a';int ia = 12;double dx = 2.23;Week temp=sunday;ch=static_cast<char>(ia);dx=static_cast<double>(ch);ia=temp;temp=static_cast<Week>(ia);
}

2)用于指针的强转(可能会出现的问题)

//
// Created by 18751 on 2023/5/24.
//
#include <iostream>
using namespace std;
int main(){int a=10;char b='a';int* intptr=&a;char* charptr=&b;//这个是安全的指针int* test1 = static_cast<int*>(&b);
}

编辑器不让我们去强转。可是,为什么呢?

因为int指针指向的是一块四字节内存大小的空间,而char指针指向一块内存大小的内存空间。
 

3)支持子类到基类的类型转换,不支持子类到基类的类型转换。如果类中有虚函数的话,这种类型转换是不安全的。不安全的原因是以下几点:

  1. 类型转换不安全:如果将一个不兼容的指针类型转换为一个另外的指针类型,可能会造成访问内存错误,这会导致不确定的行为。

  2. 对象不可转换:如果将一个无法进行转换的对象转换为另一种类型,那么在运行时将会发生类型错误。


http://www.ppmy.cn/news/110021.html

相关文章

TCP网络编程

文章目录 前言一、TCP简介---传输控制协议1. 特点2. 安全可靠3. TCP通信流程 二、TCP函数接口2.1 socket2.2 bind2.3 listen2.4 connect2.5 accept2.6 recv2.7 send 三、TCP通信实例1. 功能介绍2. 引入库3. 发送端4. 发送端 总结 前言 上期分享了UDP下的网络编程&#xff0c;相…

Android笔记--内存管理

内存(Memory)是计算机的重要部件&#xff0c;也称主存储器&#xff0c;它用于暂时存放CPU中的运算数据&#xff0c;以及与硬盘等外部存储器交换的数据。Android中&#xff0c;内存是如何分配的&#xff1f;当启动一个android程序时&#xff0c;会启动一个dalvik vm进程&#xf…

Java使用Spark入门级非常详细的总结

目录 Java使用Spark入门环境准备安装JDK安装Spark 编写Spark应用程序创建SparkContext读取文本文件计算单词出现次数 运行Spark应用程序总结 Java使用Spark入门 本文将介绍如何使用Java编写Spark应用程序。Spark是一个快速的、通用的集群计算系统&#xff0c;它可以处理大规模…

【软硬件测试】测试经验:软硬件结合测试要点

目录 一、应用行业 二、测试要点 三、硬件测试 &#xff08;1&#xff09;测试含义 &#xff08;2&#xff09;测试方法 &#xff08;3&#xff09;相关链接 四、结合测试 &#xff08;1&#xff09;测试含义 &#xff08;2&#xff09;测试工具 &#xff08;3&am…

UFS 1-UFS架构简介1

UFS 1-UFS架构简介 1 UFS是什么&#xff1f;1.1 UFS1.2 一般特征1.2.1 Target performance1.2.2 Target host applications1.2.3 Target device types1.2.4 Topology1.2.5 UFS Layering 1.3 Interface Features1.3.1 Three power supplies1.3.2 Signaling as defined by [MIPI-…

法规标准-ISO 11270标准解读(2014版)

ISO 11270是做什么的&#xff1f; ISO 11270全名为智能交通系统-车道保持辅助系统(LKAS)-性能要求及测试步骤&#xff0c;其中主要是对LKAS系统的功能要求、性能要求及测试步骤进行了介绍。 功能要求 LKAS应至少提供以下操作和状态转换&#xff1a; ——从LKAS off到LKAS on的…

JS中手撕防抖函数和节流函数

1.防抖函数 1.1定义 说明&#xff1a;在一定时间内&#xff0c;频繁执行事件&#xff0c;只执行最后一次函数。(英雄联盟回城) 1.2步骤&#xff1a; 声明定时器函数判断是否有定时器函数&#xff0c;如果有定时器函数的话就清除定时器。。如果没有定时器函数的话&#xff0…

Java程序设计入门教程-- if 条件语句

目录 单分支选择语句&#xff08;if&#xff09; 双分支选择语句&#xff08;if…else&#xff09; 嵌套if语句 单分支选择语句&#xff08;if&#xff09; 情形 当判断条件满足时&#xff0c;执行语句体S&#xff0c;而不满足则什么都不做。 格式 if &#xff08;条件判断表…