C++中两种类型的表达式
- 左值指的是内存的位置表达式,它可以在等号左边或者右边。
- 右值是值内存中某个位置存储的值,它只可以出现在等号右边。
const
- const修饰指针时,指针存储的地址不能变
int num1=10;
int* const p=&num1;
int num2=11;
p=&num2;//原来p指向num1,如果试图让p指向num2,那么会报错
- const修饰指针指向的内存里的值时,则内容不能通过指针修改
int num1=10;
const int* p=&num1;
*p=11;//如果试图通过修改p指向num1里的值时,那么会报错
- const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量。
int num1=10;
const int* const p=&num1;
*p=11;//如果试图通过修改p指向num1里的值时,那么会报错
int num2=11;
p=&num2;//原来p指向num1,如果试图让p指向num2,那么会报错
- const 放在类成员方法的右边时,表示该方法里是不能改变类属性的。
class Student{
private:
string name;
public:
void setName(string name)const{
this->name=name;//报错
}
}
至于将const放在函数名前面的情况,待续
class Student{
private:
string name;
public:
void setName(string name)const{
this->name=name;//报错
}
string* const getName1(){
return &name;
}
const string* getName2(){
return &name;
}
}
int main(){
}