前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >this 指针的意义及作用

this 指针的意义及作用

作者头像
我与梦想有个约会
发布2023-10-20 16:31:13
1380
发布2023-10-20 16:31:13
举报
文章被收录于专栏:jiajia_deng

在构造一个对象时,默认会生成一个指向当前对象的指针,这个的目的就是为了带来方便,它就是this指针,举例几个常见this指针的用途。

第一种:若成员函数中传递进来的参数与成员变量名字相等,那么赋值时就会出现问题。如下:

代码语言:javascript
复制
class CStudent
{
public:
CStudent(string name, int age)
{
// 想将形参中name赋值给成员变量name
name = name;
// 想将形参中age赋值给成员变量age
age = age;
}
~CStudent();
private:
string name;
int age;
};
使用this指针就可以解决这个问题,如下:
class CStutent
{
public:
CStutent(string name, int age)
{
// this == &CStudent
this->name = name;
this->age = age;
}
~CStutent();
private:
string name;
int age;
};

第二种:可以给让某成员函数返回this指针所指向的自身对象,这样就可以在一个语句中连续调用成员方法了(多重串联调用)。如下所示:

代码语言:javascript
复制
#include 
#include 
 
using namespace std;
 
class CStudent
{
public:
CStudent(string name, int age)
{
this->name = name;
this->age = age;
}
 
CStudent& growUp()
{
age++;
// 返回 *this 是将整个对象返回
// 可以让main函数中调用growUp方法后继续调用growUp
return *this;
}
void display()
{
cout << “name:” << name << endl << “age:” << age << endl;
}
~CStudent(){}
private:
string name;
int age;
};
 
int main(int argc, char* argv[])
{
CStudent s(“dengjia”, 25);
// growUp后返回的是CStudent对象,所以可以继续调用其growUp方法
s.growUp().growUp().growUp();
s.display();
getchar();
return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档