const
修饰符的几种用法:
这玩意地球人都知道,不管什么东东被他修饰后就表示为常量,意思是不可修改.
也可以理解为只读
//最普通的用法,这个nTemp就是常量,下面的代码中不能再修改nTemp的值
//否则编译器就会报错的
//必须初始化
const int nTemp = 10;
//这样就错了
const int nTemp;
//但声明为外部的一个常量就可以
extern const int nTemp;
//这样到反而错了
extern const int nTemp = 10;
以上都已经容易理解
当const遇上指针时就非常容易搞晕
先统一一下下面说法:
szBuffer //下面会被说明为指针自己的值
*szBuffer //下面会被说明为指针指向的值
const char *szBuffer; //指针指向的值不可修改
char const *szBuffer; //指针指向的值不可修改 其实与上面那句是一样的
char *const szBuffer; //指针自己的值不可修改
const char *const szBuffer; //指针自己的值与指向的值都不可修改
/*是不是晕了,哈哈,哥玩的不是const,哥玩的是寂寞 ^_^ */
经过仔细观察后发现:
const 只修饰他右边的东东, 如果他右边出现*szBuffer,那就是指针指向的值被修饰了
const 只修饰他右边的东东, 如果他右边出现szBuffer,那就是指针自己的值被修饰了
//const 还可以修饰函数返回值与上面的几种情况一样,就不多说了
const char *GetDate();
//这种用法更有意思
//左边的const修饰了函数的返回值
//右边的const修饰的是类里边的成员数据不可修改
const char *CObj::GetDate() const
{
}
好了,就写到了,本人学识不够,难免有出错地方,欢迎指正