Kri*_*ula 5 c++ pointers constants type-mismatch
考虑以下情况1:
const int n = 5;
int* p = &n;
Run Code Online (Sandbox Code Playgroud)
这是无效的,因为&nis 的类型cont int*和pis 的类型int *(类型不匹配错误)。
现在,考虑这种情况 2:
int k = 4;
int *const p = &k;
Run Code Online (Sandbox Code Playgroud)
本例编译成功,没有任何错误。显然,p是 类型int * const并且&k是 类型int *。在这种情况下,存在类型不匹配,但它是有效的。
问题:即使存在类型不匹配,为什么第二种情况有效?
在这种情况下,存在类型不匹配
不; 在这种情况下不存在类型不匹配。它是一个指向非常量的指针,您可以使用指向非常量的指针来初始化它。
或者,如果您坚持存在“不匹配”,那么它类似于以下“不匹配”:
const int b = 42;
Run Code Online (Sandbox Code Playgroud)
为什么第二种情况有效
简单地说:初始化器的常量性与它是否初始化 const 对象无关。此外,初始化器是非类类型的纯右值,因此 const 限定甚至不适用于它。
| 归档时间: |
|
| 查看次数: |
2565 次 |
| 最近记录: |