强制类型转换
1 static_cast<typename>(value); 更加严格的强制类型转换
2 关于类的强制类型转换 本质上是隐式调用了构造函数 且只有//接受一个参数(可以提供默认值)//的构造函数才能作为转换函数
Stonewt(double lbs)
stonewt mycat
mycat=19.6(隐式) =Stonewt(19.6) 显式
其中 可以用explicit Stonewt(double labs)来关闭隐式转换
mycat=19会自动的将19转化为double
但 当且仅当转换不存在二义性时 才会进行这种转换
比如 若还有构造函数Stonewt(long)
编译器会拒绝这些语句 因为调用存在二义性
3 那怎么将类转换成其他类型呢?
要进行相反的转换,必须使用特殊的c++运算符函数 转换函数
Stonewt wall(20,3)
double star=wall
编译器会寻找是否有匹配的转换函数 若没有找到则会报错
operator typename() 1.转换函数必须是类方法 2转换函数不能指定返回类型 3.转换函数不能有参数
注意二义性 可以先将类转化为int(double)再赋给long 同理 转换函数于c++11中 也可以用explicit来关闭隐式转换x
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步