以下是static_cast的常见用法: 将整数类型转换为浮点类型:可以将一个整数类型(如int、long、short等)转换为浮点类型(如float、double等)。 int num = 10; double numDouble = static_cast<double>(num); 复制代码 将浮点类型转换为整数类型:可以将一个浮点类型转换为整数类型,但注意可能会丢失小数部分。 double ...
int num = 10; double d = static_cast<double>(num); // 将整数转换为浮点数 具有继承关系的类型之间的转换,可以进行向上转换(派生类指针或引用转换为基类指针或引用)和向下转换(基类指针或引用转换为派生类指针或引用)。 class Base { /*...*/ }; class Derived : public Base { /*...*/ }; ...
int num = 10; double num_double = static_cast<double>(num); 复制代码指针类型的转换: int* ptr = new int(10); void* void_ptr = static_cast<void*>(ptr); 复制代码引用类型的转换: int num = 10; double& num_ref = static_cast<double&>(num); 复制代码 需要注意的是,static_cast无法执...
int num = pi; 1. 2. 在 编译器 编译时 , 会报如下警告 , 严重性 代码 说明 项目 文件 行 禁止显示状态 警告C4244 “初始化”: 从“double”转换到“int”,可能丢失数据 HelloWorld Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Test.cpp 9 1. 2. 使用C 语言 的 显示类型转换 手动强制转换 , 和...
1、_static_cast(静态类型转换,int 转换为char) 格式:TYPE B = static_cast<TYPE>(a) reinterpreter_cast(重新解释类型):专门用于指针类型的转换。 voidmain() {doubledpi =3.1415;//int num1 = dpi;//默认自动类型转换,会提示 warningintnum2 = static_cast<int>(dpi);//静态类型转换,在编译时会做类...
#include<iostream>classBase{};classDerived:publicBase {};intmain(){intnum =10;doubled =static_cast<double>(num);// int 转换为 doubleDerived derived; Base* base =static_cast<Base*>(&derived);// Derived* 转换为 Base*std::cout << d << std::endl;// 输出 10.0return0; ...
intnum=10;doubleresult=static_cast<double>(num);// 将整数转换为浮点数 dynamic_cast: 用于在运行时执行动态类型转换,通常在多态类之间转换。 只能用于指向类对象的指针或引用,并且用于将指针或引用转换为继承层次结构中的另一个相关类型。 前提是目标类型必须有至少一个虚函数。
int* num_ptr = const_cast<int*>(&num); 1. 2. 4. reinterpret_cast: 用途:主要用于不同类型之间的强制转换,视为二进制的位模式进行转换。 限制:转换的类型必须是无关联的,没有编译时检查。 示例: int num = 10; double* d_ptr reinterpret_cast<double*>(&num); ...
int num = 10;double result = static_cast<double>(num); 在上述代码中,将整数类型的变量num转换为浮点数类型的变量result。 (2)类型之间的隐式转换 class Base {public:virtual ~Base() {}};class Derived : public Base {public:void foo(){cout << "Derived::foo()" << endl;}};Base* basePtr...
static_cast 负责实现显式的、编译期间可以被检查的类型转换,主要是从一种简单的数据类型转换成另一种简单的数据类型,也可以把void类型转换为其他类型。 首先,static_cast主要是用于相同基类型之间的值拷贝,通过将一个类型的数据直接线性拷贝到另一个类型里。比如,将int 绑定到float:int num=5; float fnum=static...