复制赋值运算符返回*this vs(*this)
Copy assignment operator returning *this vs (*this)
之间有区别吗
class MyString {
...
MyString &operator=(MyString other) {
swap(s, other.s);
return (*this);
}
};
和
class MyString {
...
MyString &operator=(MyString other) {
swap(s, other.s);
return *this;
}
};
我在其他一些帖子中读到,添加括号表示您是通过引用而不是值返回的。但如果定义了返回类型,似乎没有什么区别。
您引用的链接讨论了不同的情况。在这种情况下,
*this == (*this)
这取决于你的喜好,因为他们两个会做完全相同的事情。就我个人而言,我更喜欢*this
,以避免不必要的括号
运算符优先级有时会改变取消引用的方式。想象一下的这种情况
*my_vector[0]
你认为这里会发生什么?它在做吗
(*my_vector)[0]
或
*(my_vector[0])
正确答案是第二个。有时你可能想要改变这种行为,这时()
就来了。
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 为什么使用 "this" 指针调用派生成员函数?
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 数据成员SFINAE的C++17测试:gcc vs clang
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 正在VS调试器中监视映射条目
- Confusion: decltype vs std::function
- 将IBM Rhapsody模型集成到VS 2019中
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- C++错误:"error: int aaa::bbb is protected within this context"
- 我可以将调用类的"this"传递给 lambda 函数吗?
- 修改 VS Code 中的默认C++代码段
- 如何使用c++在VS 2019上运行SQL查询
- this->field vs. this.field in C++
- 自我毁灭:this->MyClass::~MyClass() vs. this->~MyClass()
- 从clang vs gcc中调用' this '成员函数
- 为什么即使在调试版本中,VS 和 Windbg 也会"this"指针打印为"0xcccccccc"?