const最简单理解就是“不可更改”。之后再根据const出现的位置来具体理解不可更改的内容。
A. 指针所指向的数据内容不可更改。
假如有定义: char str[] = “hello”; 则:
1. const char *p = str;
2. char const *p = str;
上两种定义方式含义相同,即表示通过指针p无法更改其所指向的数据内容。
但可改变指针p所指向的位置。也就是说p[0] = ‘a’是违法的,但p = “hello”是允许的。
同理 const char str[] = “hello”也一样。
B. 指针所指向的位置不可更改。
1. char* const p = str;
则p = “hello”是违法的,但p[0] = ‘a’是允许的。
C. 函数返回值为const。
const Object get();
D. 成员函数为const,声明后该成员函数无法更改成员变量(静态成员变量除外)
class Object{
private:
int val;
static int i;
public:
void fun() const
{
val = 0; //错误,不能更改成员变量
i = 0; //正确,i为静态变量
}
}
E. 形参为const的,与A,B一致