隐式类型转换

1.在c和c++中,顶层const在执行对象的拷贝操作时,不受什么影响;但底层const却不容忽视。
顶层const表示指针本身是个常量,底层const表示指针所指的对象是一个常量;
更一般的,顶层const可以表示任意对象是常量。
eg:

1 const int v2=1;//顶层const
2 int v1=v2;//正确,顶层const忽略
3 
4 const int *p=NULL;//底层const
5 int *r=p;//错误,底层const不容忽略

1.1

常量整数0或者字面值nullptr能转换成任意指针类型;指向任意非常量类型的指针的都可以转换成void*;指向任意对象的指针都能转换成const void*.

2.

在大多数用到数组的表达式里,数组自动转化成指向数组首元素的指针。

当数组被用作 decltype关键字修饰或者作为取地址符(&),sizeof以及typeid等运算符的运算对象时,上述转换不会发生。同样的,如果用一个引用来初始化数组,上述转换也不会发生。

原文地址:https://www.cnblogs.com/yangguang-it/p/6368563.html