C++——this指针
- 软件开发
- 2025-09-10 07:03:02

1、概念
(1)this指针是一个特殊的指针,存储的对象的首地址
(2)类的成员函数(包括构造函数和析构函数)内部,隐含一个this指针,指向对象的首地址
(3)类内部,访问对象的成员变量或者调用对象的成员方法,都是通过this指针完成的,即使没有显示写出this,编译器也会自动添加
this指向谁?谁调用指向谁(哪个对象调用就指向哪个对象的首地址)
2、应用 2.1 区分同名参数和成员属性 class Person{ private: int age; string name; public: //可以用this指针来区分同名参数和成员属性 Person(int age,string name){ this->age=age; this->name=name; cout<<this<<endl; } }; 2.2 类中成员的调用都是依赖于this指针的 void show(){ //类中成员的调用都是依赖于this指针完成的,即使不加this,默认编译器也会自动添加 cout<<"姓名:"<<this->name<<",年龄:"<<age<<endl; cout<<this<<endl; } 2.3 链式调用当返回值是对象引用时,可以返回*this,此函数支持链式调用
支持链式调用的成员函数的特点:
(1)返回值类型是当前类的引用
(2)return后面是*this
#include <iostream> using namespace std; class Person{ private: int age; string name; public: Person(int age,string name){ this->age=age; this->name=name; cout<<this<<endl; } void show(){ cout<<"姓名:"<<this->name<<",年龄:"<<age<<endl; cout<<this<<endl; } int get_age(){ return age; } ~Person(){ cout<<"ga"<<endl; cout<<this<<endl; } //可以实现链式调用 Person&add_age(int num){ this->age+=num; return*this; } }; int main(){ Person zs(18,"zs"); zs.show(); Person*ls=new Person(16,"ls"); //普通调用 cout<<ls->get_age()<<endl; //16 ls->add_age(2); cout<<ls->get_age()<<endl; //18 ls->add_age(10); cout<<ls->get_age()<<endl; //28 ls->add_age(3); cout<<ls->get_age()<<endl; //31 //链式调用 cout<<ls->add_age(2).add_age(3).add_age(10).get_age()<<endl; //46 return 0; }面试题
new的过程(创建对象的过程):
1、内存分配:
(1)new运算符首先调用底层的内存分配函数(通常是operator new),为对象分配足够的内存空间
(2)如果内存分配失败(例如,由于内存不足),operator new会抛出一个std::bad_alloc异常
2、构造函数调用:
(1)一旦内存分配成功,new运算符会在分配的内存上调用对象的构造函数来初始化对象属性
(2)这意味着对象的成员变量会被初始化,并且任何在构造函数中编写的初始化代码都会被执行
3、返回指针:
最后,将初始化过的对象的首地址赋值给this, 并将this返回
C++——this指针由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C++——this指针”