1 C++中return this和return *this的含义和区别
在C++的类中,this
表示指向自身的指针,例如
class A
{
public:
A():m_Member(0) {};
virtual~A() {};
public:
void AddMember()
{
this->m_Member += 1;
}
private:
int m_Member;
};
在上述代码中,在AddMember
函数中,我们通过类的this指针访问私有成员变量m_Member
,并将该值加1。
所以在C++的类中,this
表示指向类对象本身的指针,而*this
是间接引用指针,表示的是类对象本身。
所以,return this
返回的是指向当前对象的指针,即
A* Get()
{
return this;
}
而return *this
又根据返回类型的不同而不同。
1. 当return *this的返回类型为A时
当return *this
的返回类型为A时,即
A Get()
{
return *this;
}
则返回的是对象的副本。
2. 当return *this的返回类型为A&时
当return *this
的返回类型为A&
时,即
A& Get()
{
return *this;
}
则返回的是指向当前对象的指针。
我们在重载类的拷贝赋值运算符以及移动赋值运算符会使用return *this
,如
class A
{
public:
A():m_Member(0) {};
virtual~A() {};
public:
void AddMember()
{
this->m_Member += 1;
}
// 拷贝赋值运算符
A& operator=(const A& rhs)
{
if (this != &rhs)
{
m_Member = rhs.m_Member;
}
return *this;
}
// 移动赋值运算符
A& operator=(A&& rhs) noexcept
{
if (this != &rhs)
{
m_Member = rhs.m_Member;
}
return *this;
}
private:
int m_Member;
};
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – return this和return *this的含义和区别
原文链接:https://www.stubbornhuang.com/2409/
发布于:2022年11月08日 17:36:33
修改于:2023年06月21日 17:52:58
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52