类与对象\this指针

简介: 类与对象\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月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
87 4
|
2月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
43 2
|
2月前
对象指针输出时分秒
对象指针输出时分秒
10 0
|
4月前
|
编译器 C++
virtual类的使用方法问题之在C++中获取对象的vptr(虚拟表指针)如何解决
virtual类的使用方法问题之在C++中获取对象的vptr(虚拟表指针)如何解决
102 4
|
6月前
|
编译器 C++
函数指针和函数对象不是同一类型怎么替换
函数指针和函数对象不是同一类型,为何可替换用作同一函数的参数
|
6月前
|
Java
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
49 3
|
6月前
|
存储 Java C#
C++语言模板类对原生指针的封装与模拟
C++|智能指针的智能性和指针性:模板类对原生指针的封装与模拟
|
6月前
|
C++
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
|
6月前
|
编译器 C++
this指针的特性
this指针的特性
35 0
|
1月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
101 13