{// Test Class** to const Class**
const int x = 100;
int* pi;
int** ppi = π
const int* cpi = &x;
const int** cppi = &cpi;
// cppi = ppi; // cannot convert from 'int **' to 'const int **'
// *cppi = cpi;
// 原因如下:
/*
如果是允许的,那么因为上面注释掉的两句可以知道这个时候*cppi是指向常量x的,但是又因为ppi不是 const,所以我们可以通过它来修改常量的值。
这个是不合理的,虽然在C中可以,但是在C++中被修正了。
*/
const int x = 100;
int* pi;
int** ppi = π
const int* cpi = &x;
const int** cppi = &cpi;
// cppi = ppi; // cannot convert from 'int **' to 'const int **'
// *cppi = cpi;
// 原因如下:
/*
如果是允许的,那么因为上面注释掉的两句可以知道这个时候*cppi是指向常量x的,但是又因为ppi不是 const,所以我们可以通过它来修改常量的值。
这个是不合理的,虽然在C中可以,但是在C++中被修正了。
*/
本文探讨了C++中常量指针的使用限制,特别是关于const int**与int**之间的转换问题。通过示例解释了为什么不能将非const指针赋值给const指针,并说明了这样做的潜在风险。

被折叠的 条评论
为什么被折叠?



