本文章是作者根据史蒂芬·普拉达所著的《C++ Primer Plus》而整理出的读书笔记,如果您在浏览过程中发现了什么错误,烦请告知。另外,此书由浅入深,非常适合有C语言基础的人学习,感兴趣的朋友可以自行阅读此书籍。
类型转换
自动转换也叫隐式转换。 强制类型转换也叫显式强制类型转换。将一个标准类型变量的值赋给另一种标准类型的变量时,如果这两种类型兼容,则C++自动将这个值转换为接收变量的类型。
如下面的语句:
long count = 8; // 将int类型转换成了long类型
double time = 11; //将int类型转换成了double类型
int side = 3.33; //将double类型数据转换成了int数据,从浮点转换为整型,小数消失
上述的操作可以成功,是因为在C++中,各种数值类型都表示相同的东西——一个数字,同时C++包含用户进行转换的内部规则。
C++语言不自动转换不兼容的类型。例如下面的语句是非法的:
int *p = 10;
虽然指针的地址可能是个数字,但从概念上说,整数和指针完全不同。然而,在无法自动转换时,可以使用强制类型转换。
int *p = (int *)10; //这个语句可以编译成功,即使它可能没有意义。
可以将类定义成与基本类型或另一个类相关,使得从一种类型转换为另一种类型是有意义的。因此,我们需要在设计类的同时,使类具有自动转换,或强制类型转