类与对象\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天前
|
C++
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
2 0
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
|
3天前
|
Java
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
15 3
|
3天前
|
编译器 C++
函数指针和函数对象不是同一类型怎么替换
函数指针和函数对象不是同一类型,为何可替换用作同一函数的参数
|
3天前
|
存储 Java C#
C++语言模板类对原生指针的封装与模拟
C++|智能指针的智能性和指针性:模板类对原生指针的封装与模拟
|
5天前
|
编译器 C++
this指针的特性
this指针的特性
4 0
|
12天前
|
算法 Java 程序员
面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性
【6月更文挑战第15天】面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性。封装可使用结构体封装数据和方法,如模拟矩形对象。继承则通过结构体嵌套实现静态继承。多态可通过函数指针模拟,但C不支持虚函数表,实现复杂。C语言能体现OOP思想,但不如C++、Java等语言原生支持。
29 7
|
15天前
|
数据采集 存储 编译器
this指针如何使C++成员指针可调用
本文介绍了C++中的this指针,它是一个隐藏的指针,用于在成员函数中访问对象实例的成员。文章通过代码示例阐述了this指针的工作原理,以及如何使用指向成员变量和成员函数的指针。此外,还提供了一个多线程爬虫示例,展示this指针如何使成员指针在对象实例上调用,同时利用代理IP和多线程提升爬取效率。
this指针如何使C++成员指针可调用
|
21天前
|
C++
【C++系列】指针对象和对象指针的区别
这段内容介绍了C++中`ListNode`对象和指针的两种使用方式以及它们的区别。首先,`ListNode dummy(0); ListNode* cur = &dummy;创建了一个`ListNode`对象`dummy`在栈上,`cur`是`dummy`的地址。而`ListNode* dummy = new ListNode(0); ListNode* cur = dummy;`则在堆上分配了一个`ListNode`,`dummy`和`cur`都是指向该对象的指针。使用`&dummy`作为虚拟头节点简化链表操作,避免特殊处理。栈分配内存自动管理但生命周期受限,堆分配内存需手动释放且速度较慢。
|
22天前
|
存储 安全 编译器
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
8 0
|
3天前
|
存储 C语言
C语言的函数返回值和指针
C|函数返回值(区分各类值)和指针(区分各类存储空间)的细节