21.C++- ++操作符重载、隐式转换之explicit关键字、类的类型转换函数
2021-06-23 12:06
标签:xpl 等价 bug 不同 logs 分享 临时 类型转换 结果 ++操作符重载 例如: 转换规则如下所示: 比如: 隐式转换的隐患 隐式转换有时会因为类型不同,得到的结果大有不同,也是常见bug之一. 参考以下示例: 运行打印: 答案并非是-1000。 同样,我们使用构造函数时,也经常使用隐式转换 参考以下示例: 运行打印: 首先编译器通过-2来找只有一个参数的构造函数,发现它的参数是unsigned int,所以便将-2隐式转换为unsigned int,从而造成结果不同. 如何解决隐式转换 在构造函数声明的时候加上explicit关键字,便能使该函数只能进行显示转换,使用方法如下: 添加后,再次编译Test t1=-2;时,就会报错了. 若添加explicit后,还想继续使用隐式转换,可以通过下面3钟方法使用隐式转换: 同样,也能支持类与类之间转换 不过类型转换函数可能会与构造函数冲突,比如: 编译出错,编译器不知道用哪个方式去初始化val对象,因为Value Val=t可以等价于: explicit关键字. 注意:在工程中,一般都是通过 to Type()成员函数来代替类的类型转换函数,比如QT的Qstring类: 有toInt()、toDouble()等成员函数来实现类型转换 文章来源:https://www.cnblogs.com/lifexy/p/8665780.html 21.C++- ++操作符重载、隐式转换之explicit关键字、类的类型转换函数 标签:xpl 等价 bug 不同 logs 分享 临时 类型转换 结果 原文地址:https://www.cnblogs.com/xiongjim/p/9673951.html
文章标题:21.C++- ++操作符重载、隐式转换之explicit关键字、类的类型转换函数
文章链接:http://soscw.com/index.php/essay/97786.html