为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦帮忙看看,*static_cast//代表什么意思?

麻烦帮忙看看,*static_cast//代表什么意思?

慕标琳琳 2021-06-23 18:15:26
stack.Pop()//类里一个函数cout<<*static_cast<User*>(stack.Pop())<<endl;*static_cast//代表什么意思?User*//这个User类类型的指针吧?组合一起代表什么意思?
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

static_cast操作符:该操作符用于非多态类型的转换,任何标准转换都可以使用他,即static_cast可以把int转换为double,但不能把两个不相关的类对象进行转换,比如类A不能转换为一个不相关的类B类型。static_cast本质上是传统c语言强制转换的替代品,也就是说static_cast<int> (a)和(int)a是一样的。因此*static_cast<User*>(stack.Pop())与*(User*)statck.Pop()是相同的。

返回值可以转变为指针?
这要看函数的反回值是什么,你程序中的Pop函数可能反回值就是一个指针,所以才可以强制将指针指向的类型进行转换的。比如函数Pop可以是这样的User *Pop(...){...}它的反回类型可能就是User或者与User类相兼容的指针。

查看完整回答
反对 回复 2021-06-28
?
慕斯王

TA贡献1864条经验 获得超2个赞

把stack.Pop()返回的值强制转换为User指针,然后解引用就是前面加*号,获取指针指向地址的变量的值。

查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 347 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信