Предположим, я хочу перевернуть некоторый двоичный , смогу ли я определить разницу между:
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 действительно исчез.