常函数:
成员函数后加const
void showPerson()const{}
特性:
常函数内不可以修改成员属性
成员属性生命是加关键字mutable后,在常函数中依然可以修改
常对象:
声明对象前加const称该对象为常对象
常对象只能调用常函数
#include<iostream>
#include<string>
using namespace std;
class Person {
public:
//this指针的本质,是指针常量,指针的指向是不可以修改的,这里指针指向,变量,不是指向的值
//Person *const this
//const Person * const this 这样的话指针指向的对象所指向的值也不能修改
void showPerson()const {//const Person * const this 这样的话指针指向的对象所指向的值也不能修改
//在成员函数后面加const,修饰的是this指针的指向,让指针指向的值也不能修改
m_A = 100;
this = NULL;//此时this指针已经指向对象p,是不可以修改的
}
int m_A;
};
void test01() {
Person p;
p.showPerson();//此时this指针已经指向对象p,是不可以修改的
}
int main() {
test01();
return 0;
}
这里会报错。m_A不能改值
去掉const后this仍然不能改值,因为这个this是个指针常量,指向的东西不能改,这里已经指向对象p了
关于常量指针和指针常量可以点击这里
常量指针就是指向可以改,值不可以,指针常量就是指向不可以改,值可以
如果你想在常函数中修改值,那就加上关键字mutable
这里的函数dunc(){},只是一个空函数