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

来源:互联网 发布:装甲间隙知乎 编辑:程序博客网 时间:2024/06/16 18:26

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.

原创粉丝点击