c++新标准的一个问题
2024-09-02 21:43:10
显示转换运算符存在多个兼容版本的时候,explicit 关键字无效,编译器默认会选择那个兼容版本进行转换,而不是报错。
测试环境:gcc4.8.1
示例代码:
class plebe
{
private:
char i=;
public:
plebe(int i):i(i){}
operator int()const
{
return (int)i;
}
explicit operator double()const
{
return (double)i;
}
}; int main()
{
plebe one('a'),two('b');
int n=one;
double m=two;
cout<<"n:"<<n<<endl;
cout<<"m:"<<m<<endl;
return ;
}
explicit operator double()const 这行有个explicit
所以double m=two;这句应该编译不过才对
实际上编译过了
所以double m=two;这句应该编译不过才对
实际上编译过了
但是把int转换相关代码去掉编译器就会报错。
这是否是个bug?
最新文章
- 收集几个不错的最新win10系统64位和32位系统Ghost版下载
- 爬虫---request+++urllib
- SQL2014内存表性能之内存中 OLTP 的性能改进测试
- PAT 解题报告 1009. Product of Polynomials (25)
- ABAP简单表维护的制作
- Windows下搭建Nginx实现负载均衡
- mxnet运行时遇到问题及解决方法
- uoj 55 紫荆花之恋 动态点分治+替罪羊式重构+treap
- DSL 系列(1) - 扩展点的论述与实现
- CSS集锦
- PHP环境安全加固
- Kubernetes部署SpringCloud(三) 使用 Ingress-nginx 暴露服务
- 学习笔记之Python调试 - pdb
- N的阶乘:高精度
- CentOS系统基础优化16条知识汇总
- 开发shellcode的艺术
- CSS3 教程
- Verilog MIPS32 CPU(七)-- DIV、DIVU
- cout/cin
- java研发常见问题总结2
热门文章
- Helper Devise: could not find the `Warden::Proxy` instance on request environment
- 有意思的shader案例
- java.net.SocketException四大异常解决方案---转
- 模拟登陆Github示例
- [shell基础]——变量
- webpack的学习感悟
- Java复习第四天
- 定时器setTimeout()和setInterval()使用心得整理
- 超时重试(一)ajax
- 十、集成使用redis