Обращение C ++ foo (MyClass &) к foo (const MyClass &) - PullRequest
0 голосов
/ 17 июня 2020

Предположим, я хочу перевернуть некоторый двоичный , смогу ли я определить разницу между:

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 действительно исчез.

1 Ответ

0 голосов
/ 17 июня 2020

Просто вставьте ответ @ StoryTeller-UnslanderMonica для полноты:

$ c++filt _Z3fooRK5Point
foo(Point const&)
...