子子翔的专栏

挨踢民工生涯

C++不允许将int **转换为const int **

C++ Complains about Converting 'int **' to 'const int **'

Recently when I was switching a project from C to C++, I found that C++ compilers do not allow converting int ** to const int ** , even with explicit cast.

After searching on the web and thinking, I think the underlying reason is that C++ does not allow converting const T * to T * , unless const_cast is used. Let's assume that a  is of type const T ** , and b is of type T **. If we can assign the value of b to a , then we can make * b point to a const T variable by dereferencing a , without using const_cast . This violates the principles of C++.

One of the principles of C++ is that, if a programmer uses const_cast , he/she declares that the current conversion will do no harm to the programme; otherwise he/she may have not concerned about the possible danger brought by the current conversion, which is probably a bug. In the later case, the compiler must report an error to remind the programmer.

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zzxiang1985/article/details/6155153
个人分类: C/C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

C++不允许将int **转换为const int **

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭