反转C ++ foo(MyClass&)与foo(const MyClass&)

问题描述 投票:-1回答:1

假设我想反转一些二进制文件,我可以分辨出两者之间的区别:

int foo(MyClass &) { ... }

int foo(const MyClass &) { ... }

假设代码已编译良好,那么将有没有const限定符的证据,对吧?我使用以下代码对其进行了测试:

class Point { public: int x=6; int y=8; };
int foo(const Point &p){ return p.x+p.y; }
int main(int argc, char **argv)
{
    Point p;
    return foo(p);
}

然后用-g-O0编译并转储:

$ gcc -g -O0 main.cpp -o main
$ objdump -D ./main | grep "foo"
000000000000066a <_Z3fooRK5Point>:
 6b6:   e8 af ff ff ff          callq  66a <_Z3fooRK5Point>

[当我检查相关行时,似乎const确实消失了。

c++ binary const reversing
1个回答
0
投票

只需粘贴@ StoryTeller-UnslanderMonica的完整答案:

$ c++filt _Z3fooRK5Point
foo(Point const&)
© www.soinside.com 2019 - 2024. All rights reserved.