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
当前分类随机文章推荐
- C++ - int转string方法总结 阅读6989次,点赞0次
- C++ - 得到字符串中某个字符串出现的个数 阅读4416次,点赞2次
- C++11 - 使用std::codecvt进行字符编码转换需要注意的时间效率问题 阅读2564次,点赞2次
- C++ - 在Visual Studio中使用OpenMP加速for循环 阅读530次,点赞0次
- C++ - 一文搞懂std::future、std::promise、std::packaged_task、std::async的使用和相互区别 阅读651次,点赞0次
- C++ – UTF8编码下的全角字符转半角字符 阅读2454次,点赞0次
- C++ - Windows下实现程序开机自启动功能或者关闭开机自启动 阅读27次,点赞0次
- C++ - Map中存储动态指针时正确释放内存 阅读4140次,点赞0次
- C++ - websocket++库的可使用的所有事件总结 阅读435次,点赞0次
- C++ - 拷贝构造函数与拷贝构造函数调用时机 阅读567次,点赞0次
全站随机文章推荐
- 资源分享 - Real-Time 3D Graphics with WebGL 2 , Second Edition英文高清PDF下载 阅读1492次,点赞0次
- Pytorch - reshape和view的用法和区别 阅读806次,点赞0次
- OpenVINO - 在Windows系统上配置OpenVINO C++开发环境 阅读277次,点赞0次
- 深度学习 - 以一个极简单的中英文翻译Demo彻底理解Transformer 阅读1115次,点赞0次
- Python - 语音识别文本相似性度量库jiwer,可计算文字错误率WER、匹配错误率MER等相似性度量指标 阅读2996次,点赞0次
- WordPress - 发布文章时推送文章到百度普通收录,缩短百度爬虫发现网站链接的时间 阅读33次,点赞0次
- C++ - std::map正向遍历与反向遍历的几种方式 阅读5200次,点赞3次
- 资源分享 - Tricks of the 3D Game Programming Gurus - Advanced 3D Graphics and Rasterization 英文高清PDF下载 阅读1864次,点赞0次
- 资源分享 - 深度学习实战(杨云杜飞 清华大学出版社)高清pdf下载 阅读2740次,点赞0次
- Duilib - Label控件文本换行 阅读2661次,点赞1次
评论
169