Tôi nhận thấy rằng nếu tôi chạy strings
trên chương trình của mình được biên soạn bởi g++
, đầu ra chứa tên của các lớp khác nhau mà nó sử dụng.Tại sao g ++ lưu trữ tên lớp trong nhị phân đã biên dịch?
Chương trình được biên dịch với -O3
và không có -g
hoặc -p
và tên lớp vẫn còn hiện diện khi tôi loại bỏ nhị phân.
Tôi đã tự hỏi tại sao cần thiết cho g++
để lưu trữ thông tin này trong tệp nhị phân? Các tên lớp có mặt tất cả dường như là các lớp sử dụng các chức năng ảo, vì vậy tôi nghi ngờ đây là một cái gì đó để làm với nó.
Điểm tham chiếu: Sử dụng 'g ++ -c blah.o blah.cpp' không bao gồm tên lớp cho đến khi sau khi liên kết nó dưới dạng tệp thi hành. – mkb