显示转换运算符存在多个兼容版本的时候,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;这句应该编译不过才对
实际上编译过了 
但是把int转换相关代码去掉编译器就会报错。
这是否是个bug?

最新文章

  1. 收集几个不错的最新win10系统64位和32位系统Ghost版下载
  2. 爬虫---request+++urllib
  3. SQL2014内存表性能之内存中 OLTP 的性能改进测试
  4. PAT 解题报告 1009. Product of Polynomials (25)
  5. ABAP简单表维护的制作
  6. Windows下搭建Nginx实现负载均衡
  7. mxnet运行时遇到问题及解决方法
  8. uoj 55 紫荆花之恋 动态点分治+替罪羊式重构+treap
  9. DSL 系列(1) - 扩展点的论述与实现
  10. CSS集锦
  11. PHP环境安全加固
  12. Kubernetes部署SpringCloud(三) 使用 Ingress-nginx 暴露服务
  13. 学习笔记之Python调试 - pdb
  14. N的阶乘:高精度
  15. CentOS系统基础优化16条知识汇总
  16. 开发shellcode的艺术
  17. CSS3 教程
  18. Verilog MIPS32 CPU(七)-- DIV、DIVU
  19. cout/cin
  20. java研发常见问题总结2

热门文章

  1. Helper Devise: could not find the `Warden::Proxy` instance on request environment
  2. 有意思的shader案例
  3. java.net.SocketException四大异常解决方案---转
  4. 模拟登陆Github示例
  5. [shell基础]——变量
  6. webpack的学习感悟
  7. Java复习第四天
  8. 定时器setTimeout()和setInterval()使用心得整理
  9. 超时重试(一)ajax
  10. 十、集成使用redis