Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1643|回复: 1
打印 上一主题 下一主题

C++ 强制转换运算符 cast

[复制链接]

1272

主题

2067

帖子

7962

积分

认证用户组

Rank: 5Rank: 5

积分
7962
跳转到指定楼层
楼主
发表于 2020-4-4 15:08:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
强制转换运算符是一种特殊的运算符,它把一种数据类型转换为另一种数据类型。强制转换运算符是一元运算符,它的优先级与其他一元运算符相同。
大多数的 C++ 编译器都支持大部分通用的强制转换运算符:
(type) expression
其中,type 是转换后的数据类型。下面列出了 C++ 支持的其他几种强制转换运算符:
  • const_cast<type> (expr): const_cast 运算符用于修改类型的 const / volatile 属性。除了 const 或 volatile 属性之外,目标类型必须与源类型相同。这种类型的转换主要是用来操作所传对象的 const 属性,可以加上 const 属性,也可以去掉 const 属性。
  • dynamic_cast<type> (expr): dynamic_cast 在运行时执行转换,验证转换的有效性。如果转换未执行,则转换失败,表达式 expr 被判定为 null。dynamic_cast 执行动态转换时,type 必须是类的指针、类的引用或者 void*,如果 type 是类指针类型,那么 expr 也必须是一个指针,如果 type 是一个引用,那个 expr 也必须是一个引用。
  • reinterpret_cast<type> (expr): reinterpret_cast 运算符把某种指针改为其他类型的指针。它可以把一个指针转换为一个整数,也可以把一个整数转换为一个指针。
  • static_cast<type> (expr): static_cast 运算符执行非动态转换,没有运行时类检查来保证转换的安全性。例如,它可以用来把一个基类指针转换为派生类指针。

上述所有的强制转换运算符在使用类和对象时会用到。现在,请看下面的实例,理解 C++ 中如何使用一个简单的强制转换运算符。复制并黏贴下面的 C++ 程序到 test.cpp 文件中,编译并运行程序。
#include <iostream>using namespace std; int main(){   double a = 21.09399;   float b = 10.20;   int c ;    c = (int) a;   cout << "Line 1 - Value of (int)a is :" << c << endl ;      c = (int) b;   cout << "Line 2 - Value of (int)b is  :" << c << endl ;      return 0;}
当上面的代码被编译和执行时,它会产生下列结果:
Line 1 - Value of (int)a is :21Line 2 - Value of (int)b is  :10

https://www.runoob.com/cplusplus/cpp-casting-operators.html
回复

使用道具 举报

1272

主题

2067

帖子

7962

积分

认证用户组

Rank: 5Rank: 5

积分
7962
沙发
 楼主| 发表于 2020-4-4 15:43:49 | 只看该作者
本帖最后由 Qter 于 2020-4-4 16:21 编辑

        //ContactInfo* pCI = (ContactInfo*)index.data(Qt:isplayRole).value<void*>();
                        ContactInfo* pCI = dynamic_cast<ContactInfo*>(index.data(Qt:isplayRole).value<ContactInfo*>());
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-26 07:14 , Processed in 0.056480 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表