Rumah > pembangunan bahagian belakang > Tutorial C#.Net > C++11常用语法- explicit类型转换运算符的具体用法

C++11常用语法- explicit类型转换运算符的具体用法

php是最好的语言
Lepaskan: 2018-07-26 13:54:49
asal
2492 orang telah melayarinya

为了想explicit类型转换运算符和C++Primer书中不同的地方,且提供更加有意义的例子,作者花费了不少心思,请大家务必认真理解。

类型转换运算符

看下面的例子:

20180725200513413.png

 这时一个复数类的雏形,定义了一个double类型的类型转换运算符。有了它以后,可以像下面这样使用:

20180725200628901.png

输出结果如下:

20180725200813895.png

 complex不支持输出运算符,所以编译器努力将c1转换成double类型以后输出。到目前为止都挺好。

 真的是想转换成double?

 再看下面的代码:

20180725201532889.png

如果从数学的角度来讲,应该输出2.23606。但实际上,这段代码连编译都通不过。其原因是对于这段代码编译器有两种选择:一个是将c1转换称double然后加1;另一个是将1转换为复数(1+0i)以后执行复数加法。

需要程序员给个想法。

显式的类型转换运算符

为了消除二义性,一个办法就是使用explicit禁止隐式的double类型转换。代码如下:

1.png

由于无法进行隐式类型转换,所以下面的代码会出现编译错误:

2.png 

这并不是什么大问题,因为转换为double输出这件事本身对不对都不好讲。代码中已经通过输出运算符重载提供了复数形式的输出功能。

输出如下:

3.png

这才是我们真正想要的!

补充一点

如果愿意的话,也可以这样编码:

4.png

觉得本文有帮助?请分享给更多人。

相关推荐:

HTML 运算符、类型转换

C# 自定义 implicit和explicit转换

C 语言教程

Atas ialah kandungan terperinci C++11常用语法- explicit类型转换运算符的具体用法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan