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

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,"yyy");
p.getId();    //正确,getId为const成员函数
p.getName();  //错误,p为const对象,不能调用非const成员函数
Person p1(2,"ddd");
p1.getId();    //正确,普通对象可以调用const成员函数
p1.getName();  //正确,普通对象可以调用非const成员函数
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值