this指针

一、this指针
每个成员函数(除static成员函数外)都有一个隐含的形参this指针,this指针指向所调用的对象。例如函数add_year可以这样写:
void Date::add_year(int n)
{
        this->y += n;
}
在成员函数中,不必显示的使用this指针来访问对象所属的成员。


二、const成员函数
理解了this指针之后,就可以理解有的成员函数后面跟上const关键字的含义了,例如:
class Date {
        int d, m, y;
public:
        int day() const;
        int month() const;
        int year() const;
};

inline int Date::year() const
{
        return y++; // 错误:不能修改成员变量值
}

inline int Date::year() const
{
        return y;
}

inline int Date::year() // 错误:缺少const
{
        return y;
}
const成员函数必须在定义和声明后面都加上const关键字,否则会出现编译错误。

在函数后面加上const关键字,表明this是指向const对象的指针,所以在该成员函数里面不能对该对象做任何修改,并且只能调用const成员函数,不能调用非const成员函数。而对于非const成员函数即可以调用非const成员函数,也可以调用const成员函数。const对象和非const对象都可以调用const成员函数,非const成员函数只能被非const对象调用。例如:

void f(Date& d, const Date& cd)
{
        int i = d.year();            // ok
        d.add_year(1);           // ok
 
        int j = cd.year();          // ok
        cd.add_year(1);          // 错误:不能修改const cd的值           
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值