Effective C++ (7) 强制类型转换
来源:互联网 发布:centos 7安装ngrok 编辑:程序博客网 时间:2024/06/01 08:57
标准c++中主要有四种强制转换类型运算符:
const_cast,reinterpret_cast,static_cast,dynamic_cast等等。
1、static_cast
static_cast(expression)将expression_r转换到独立地基于表达式中给出的类型type_id类型。没有运行类型检查被执行以确保转换的安全性。static_cast运算符可被用在例如转换一个基类指针到一个派生类指针的操作,这样的转换不总是安全的,相对而言,dynamic_cast是安全的。
(注意:static_cast<>()转换只是返回当前强制类型转换过后的值,也就是说,使用该操作符进行强制类型转换的时候,并不改变用于转换的源值,而只是暂时借用源值转换并保存值,所以要定义另外一个变量来保存转换以后的值。)
例:
class B { ... };
class D : public B { ... };
void f(B* pb, D* pd)
{
}
2、 dynamic_cast
例:
class A { ... };
class B { ... };
void f()
{
}
3、reinterpret_cast运算符允许任何指针被转换到任何其它指针类型,它还允许任何整型转换到任意指针类型,且反之亦然。滥用reinterpret_cast运算符可轻易导致不安全,除非是所期望的转换是固有的低等级,否则你应使用其它转换运算符之一。
例:
class A { ... };
class B { ... };
void f()
{
}
4、const_cast运算符可被用于从一个类中除去const、volatile和_
例:
class A { ... };
void f()
{
//pb = pa; //这里将出错,不能将const对象指针赋值给非const对象
...
}
- Effective C++ (7) 强制类型转换
- c++-----强制类型转换
- 【C++】强制类型转换
- C 强制类型转换
- C 强制类型转换
- C 强制类型转换
- Effective C# Item28:避免强制类型转换
- C/C++强制类型转换。。。
- c/c++强制类型转换
- C语言类型强制转换
- c/c++强制类型转换
- C语言强制类型转换
- C中的类型强制转换
- c/c++强制类型转换
- C语言类型强制转换
- C/C++类型强制转换
- C语言强制类型转换
- C指针强制类型转换
- 修改设置eclipse 中java文件和jsp文件字体的大小
- Effective C++ (3) 避免C++头文件的多重包含
- Effective C++ (4) c++中的命名空间
- Effective C++ (5) 几个关于数组的问题
- Effective C++ (6) 函数的参数传递
- Effective C++ (7) 强制类型转换
- Effective C++ (8) 顺序容器vector,list,deque
- 泛型算法
- 第一回 ,如何写 go 代码
- C++模板
- plone安装,配置,备份,转移
- 模糊聚类算法(FCM)和硬聚类算法(HCM)的VB6.0实现及
- 模糊聚类分析的实现
- 常见英语构词方法及高效的记忆方法