一、规则
在C++标准中,规定了量化饰词相关的型别转换规则。在满足以下条件的前提下,在型别转换中允许向多级指针的非首级指针型别上添加cv-量化饰词(const、volatile):
1、指针型别相似。指针具有相同的基型别,并且拥有相同的指涉级数(“*”的个数)。
2、对所有的j > 0,若const存在于“cv1,j”中,那么const也要存在于“cv2,j”中。(对volatile也有同样的要求)
3、对所有的j > 0,若“cv1,j”与“cv2,j”不同,那么对于所有的0 < k < j,都要求const存在于“cv2,k”中。
二、解释
考虑下面的3级指针:
// 0 <= j <= 3,注释用cvj表示
int * * * const cnnn = 0; // cv0=const, cv1=none, cv2=none, cv3=none
int * * const * ncnn = 0; // cv0=none, cv1=const, cv2=no