const的用法
谁能帮忙详细解释一下,非常感谢!
对以下const的使用方法不正确说明是:()
(1)const int* AA();
(2)int BB(int* const pa);
(3)int CC(const int* pa);
(4)int D::DD(void) const;
A)(1)的作用是防止AA函数返回的int*被修改;
B)(2)的作用是防止在BB函数内参数pa的值被修改;
C)(3)的作用是防止在CC函数内参数*pa的值被修改;
D) (4)的作用是防止DD函数在执行过程中修改DD类的数据成员或者调用非const函数;
[解决办法]
const修饰那个变量就表示不允许修改那个变量的值。解释什么呢?
const int* AA(); const修饰int*
int BB(int* const pa); 修饰pa
(3)int CC(const int* pa); 修饰*pa
(4)int D::DD(void) const; 修饰整个函数,那么真个函数都不修改变量
[解决办法]
记住:前固数,后固址
[解决办法]
俺觉得A是错的
(1)const int* AA();
正确的说法应该是:AA返回的指针所指向的内容不可改变
如果严格点,全面一点的话,(4)也是错的,比如如果D类中有一个成员变量用mutable修饰时,DD也是可以修改它的。
(2)(3)的说法看不出有啥错。
[解决办法]
B、C似乎木有错。
A是错的,应该是AA返回的指针所指向的内容不可变
D严格点说也是错的,比如如果类中的某个成员变量由mutable修饰过,那么DD也是可以修改这个成员变量的。
[解决办法]
A错的。 A的意思是返回的指针的所指向的值是不能被修改的。。总之如果const在前面,就是是值const,如果在后面就是地址const。