欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++ this指针与const成员函数

程序员文章站 2022-07-12 15:29:29
...

C++ this指针与const成员函数
this指针
每个对象拥有一个this指针,通过this指针来访问自己的地址。

this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。

this指针只能在成员函数中使用,全局函数、静态函数都不能使用this指针

*在普通成员函数中,this是一个指向非const对象的const指针(如类类型为Student,那么this就是Student const类型的指针);
在const成员函数中,this指针是一个指向const对象的const指针(如类类型为Student,那么this就是const Student * const类型的指针)

this指针在成员函数开始执行前构造,在成员函数执行结束后销毁。

const对象与const成员函数
在成员函数参数列表后面加上const修饰,表示函数内this指针是一个指向常量对象的指针,不能修改成员变量。

void Person::setName(string name) const
{
    this->name = name;
} //错误,const成员函数不能修改成员变量

一个const成员函数如果以引用的形式返回*this,那么它的返回类型是常量引用

对于const对象或者const对象的引用和指针,对象内的成员变量是不能修改的,因此只能调用const成员函数,不会修改成员变量
对于非const对象,既可以调用const成员函数,也可以调用非const成员函数。

int Person::getId()const
{
    return this->id;
}
string Person::getName()
{
    return this->name;
}
const Person p(1,"yuewenlong");
p.getId();    //正确,getId为const成员函数
p.getName();  //错误,p为const对象,不能调用非const成员函数
const Person p1(2,"dengqilong");
p.getId();    //正确,普通对象可以调用const成员函数
p.getName();  //正确,普通对象可以调用非const成员函数

相关标签: this