static_cast基本用法 c++

目录

引言

1. 使用场景

1.1 基础数据类型的转换

1.2 指向派生类的指针或引用转换为指向基类的指针或引用

 1.3 指向基类的指针或引用转换为指向派生类的指针或引用

1.4 在有关联的类型之间进行转换

注意


引言

static_cast 是 C++ 中四个命名强制类型转换操作符之一。它用于执行各种不同类型之间的转换。

1. 使用场景

1.1 基础数据类型的转换

可以将一种基础数据类型转换为另一种基础数据类型。例如,将 double 转换为 int,或将 float 转换为 double 等。

double a= 5.5;
int i = static_cast<int>(a);  // i = 5

1.2 指向派生类的指针或引用转换为指向基类的指针或引用

class Base {};
class Derived : public Base {};
Derived derivedObj;
Base* basePtr = static_cast<Base*>(&derivedObj);

 1.3 指向基类的指针或引用转换为指向派生类的指针或引用

但这是不安全的,因为在转换过程中没有运行时检查。如果确实需要运行时检查,应使用 dynamic_cast

Base* basePtr = new Base();
Derived* derivedPtr = static_cast<Derived*>(basePtr); // 不安全!

1.4 在有关联的类型之间进行转换

例如,转换枚举值为整数

enum Color { RED, GREEN, BLUE };
int value = static_cast<int>(GREEN);  // value = 1

注意

使用 static_cast 时,需要确保转换在逻辑上是合理的,因为 static_cast 不执行运行时类型检查。如果对转换不确定,考虑使用其他类型的转换,如 dynamic_cast,或者重新评估设计,以避免需要转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值