类与对象\this指针

  • this指针:每个成员函数都有的隐含指针,存放当前对象的地址

    • 是一个常量指针
    • 不是对象的一部分,不会影响 sizeof(对象) 的结果
  • 任何对类成员的直接访问,都可以看成是this指针的隐式使用

  • this 的显式使用

    • 类成员函数中返回类对象本身
      • return *this
    • 参数与数据成员名相同
      • this->num=num
      • 前者为数据成员,后者为参数

代码实例

#include <iostream>
using namespace std;

class CDate
{
private:
    int Date_Year, Date_Month, Date_Day;
public:
    void SetDate(int, int, int);
    void Display();
};

void CDate::SetDate(int year, int month, int day)
{
    Date_Year = year;
    Date_Month = month;
    Date_Day = day;
}

void CDate::Display()
{
    cout << "调用该函数的对象的this指针为:";
    cout << this << endl;
    cout << "当前对象Data_Year成员的起始地址为:";
    cout << &this->Date_Year << endl;
    cout << "当前对象Data_Month成员的起始地址为:";
    cout << &this->Date_Month << endl;
    cout << "当前对象Data_Day成员的起始地址为:";
    cout << &this->Date_Day << endl;
    cout << "year=" <<this->Date_Year << " month=" << this->Date_Month << " day=" << this->Date_Day << endl;
    cout << endl;
}

int main() 
{
    CDate date1, date2;
    date1.SetDate(2021, 12, 31);
    date2.SetDate(2022, 1, 1);
    
    cout <<"date1的地址为:"<< &date1 << endl;
    date1.Display();

    cout << "date2的地址为:"<< &date2 << endl;
    date2.Display();

    return 0;    
}

注:这里的 &this->Date_Year 中,“->"优先级比”&“高
所以执行的操作为 >> 先指向该成员变量再取地址

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tsglz3210

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值