在 C++ 二进制文件中,我发现 Qt 方法像??4QString@@QEAAAEAV0@AEBV0@@Z
which demangle to
public: class QString & __ptr64 __cdecl QString::operator=(class QString const & __ptr64) __ptr64
或更短的形式,QString& QString::operator=(QString const&)
. 返回值似乎没有被使用。鉴于它似乎不是人们在原始代码中编写的构造,这个“一元等于”的目的是什么?
编辑
我找到了我困惑的根源。我完全接受了与 的调用约定this
,以及operator=
应该做什么。根据我的经验,人们this
在逆向软件时将其表示为直接参数是很常见的。例如,这就是 IDA 所做的。这也是我打算做的。所以,它会被认为是一元的,因为我写的它只接受参数 ( this
)。
事实证明,IDA 以某种方式错误地分配了类型,并给了它签名__int64 __fastcall QString__operator_(_QWORD)
而不是QString* __fastcall QString__operator_(QString *, QString const *)
. 我不知道这是什么原因造成的。来自 [demangler.com] 的输出,我放在我帖子的前半部分,没有包含隐含的this
,这与我的预期相反。