之间的确切区别是什么?
typedef class abc* abcp;
typedef const class abc* constAbcp ;
const abcp a1 ; ------- 1
constAbcp a2 ; ------- 2
what is the difference between 1 and 2
答案 0 :(得分:2)
a2 is pointer to constant.
a1 is constant pointer.
a2->nonConstFunc(); // Bad
a1 = a2; // Bad
a1->nonConstFunc(); // OK
a2 = new_a2; // OK
示例:
struct abc {
int foo;
};
typedef abc* abcp;
typedef const abc* constAbcp ;
abc temp[5];
const abcp a1 = temp;
constAbcp a2 = temp;
a1->foo = 5; // OK
a2->foo = 5; // Bad(Compile error)
a1++; // Bad
a2++; // OK
密切相关的C问题:what does this 2 const mean?
答案 1 :(得分:0)
const abcp a1 ;
const Abcp a2 ;
a1
是指向abcp
a2
是指向Abcp
答案 2 :(得分:0)
正如其他回答者所提到的,a1
是一个常量指针。这意味着无法更改地址。
const abcp a1;
简化为:
abc* const a1;
坦率地说这是废话,因为你现在有一个未初始化且无法更改的指针。所以任何转让都是非法的。例如,你不能这样做: 。a1 = NULL;
其他回答者也提到,a2
是指向常量的指针。意味着无法更改值的地址。
constAbcp a2;
简化为:
const abc* a2;
这确实有意义,因为您可以将所有想要的内容分配给a2
,只是您只能使用它来读取它引用的值。您不能使用它来写入它引用的值。