请考虑以下代码:
int** a;
const int** b;
b = a;
此代码出错:
error C2440: '=' : cannot convert from 'int **' to 'const int **'
Conversion loses qualifiers
为什么我无法执行演员表?
当操作简单指针时,它可以正常工作。
int* a;
const int* b;
b = a;
答案 0 :(得分:3)
假设您能够执行此演员表。考虑:
const int n = 42;
const int* cp = &n;
int* p;
int** a = &p;
const int** b;
b = a; // hypothetical, doesn't compile
*b = cp; // equivalent to p = cp;
*p = 84; // equivalent to n = 84: oops
因此,允许从int**
到const int**
的隐式强制转换将允许程序违反const正确性。