您当前的位置: 首页 >  c++

龚建波

暂无认证

  • 3浏览

    0关注

    312博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++学习笔记:强制类型转换

龚建波 发布时间:2020-03-19 23:41:10 ,浏览量:3

0.旧式转换

先看看旧式的强制类型转换(如,整数进行浮点除法时会把其中一个变量用旧式转换转为 double):

	//type(expr)  函数形式的强制类型转换
	int count1 = 10;
	bool not_empty1 = bool(count1); //为true
	//或者(type)expr  C语言风格的强制类型转换
	int count2 = 0;
	bool not_empty2 = (bool)count2; //为false

根据所涉及的类型不同,旧式的强制类型转换分别具有与 const_cast、static_cast、reinterpret_cast 相似的行为。与命名的强制类型转换相比,旧式的强制类型转换出问题更不容易追踪。

 

除了旧式的转换,还有四种命名的强制类型转换:static_cast、const_cast、dynamic_cast 和 reinterpret_cast。

1.static_cast

任何具有明确定义的类型转换,只要不包含底层const(形如const char *ptr,表示指针所指的对象是一个常量),都可以使用 static_cast。(C++ Primer Plus上说,只有两者其中一方可以隐式转换为另一方(如向上转型),转换才是合法的,否则会出错)

	//进行强制类型转换以便执行浮点数除法
	int a = 1, b = 2;
	double result = static_cast(a) / b;

可以参照cpp在线手册的例子来理解他的应用场景:

#include 
#include 
 
struct B {
    int m = 0;
    void hello() const {
        std::cout             
关注
打赏
1655829268
查看更多评论
0.0512s