返回 *this 和 this - c++ 之间的区别
Difference between returning *this and this - c++
Class A{
//Code...
A& operator++(){
//code..
return ____;
}
A operator++(){
//code..
return ___;
}
我什么时候应该返回*this
或this
?
我确实知道this
是一个指针,*this
是指针的取消引用,但是当函数期望通过引用或值获得值时,我很难决定返回什么。
this
在你的函数中属于A*
类型,所以返回的类型是不合适的。
*this
在函数中属于A&
类型,可以绑定到A&
或A
。当像您正在执行的那样重载前缀++
运算符时,返回A&
是函数的正常返回类型。
编辑:返回类型A
和A&
都需要返回*this
。如果有返回类型A*
则需要返回this
。
该类可以返回A
或A&
,但其行为将发生变化。如果返回类型A
则类将创建自身的副本并返回它;如果返回类型为A&
则类将返回对自身的引用。
所以这取决于类的设计。 通常operator++
在递增类值后返回类值,因此逻辑设计将首先递增它(无论它意味着什么(,然后返回引用。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 表示"accepting anything for this template argument" C++概念的通配符
- 为什么使用 "this" 指针调用派生成员函数?
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 大小相等但成员数量不同的结构之间的性能差异
- 类与私有变量的其他类之间的线程安全性
- 如何在cpp文件之间切换窗口?在Qt中
- 线程之间的布尔停止信号
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 返回 *this 和 this - c++ 之间的区别
- 两个"this" c++ 之间的区别
- 使用 JNI 在 C++ 和 JAVA 之间进行通信时,我在哪里保存"this"?
- 构造函数中的"my_constructor : variable(x)"和"this.variable = x"之间有区别吗?
- C++中func()和(*this).func()之间的区别