我有这段代码
Stack& Stack:: operator=(const Stack& stack){
if(this == &stack){
return *this
}
}
Run Code Online (Sandbox Code Playgroud)
这里我定义操作=,但我不明白,如果我收到通过参考堆栈,为什么是&在this == &stack不this == stack和我们为什么返回*的return *this,而不是this在此先感谢您的帮助
因为this是指针(即类型Stack*),而不是引用(即不是类型Stack&).
我们if(this == &stack)只是用来确保声明
s = s;
Run Code Online (Sandbox Code Playgroud)
可以正确处理(特别是当你需要删除旧对象中的东西时).仅当两者都是同一个对象时,指针比较才为真.当然,我们也可以按价值进行比较
if (*this == stack)
return *this;
else {
...
}
Run Code Online (Sandbox Code Playgroud)
但==操作可能非常缓慢.例如,如果您的堆栈有N个项目,*this == stack则需要N步.由于任务本身只需要N步,因此无需任何操作.
| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |