C++이나 C#으로 작성한 oop 코드는 기계어 코드 나 C#의 경우 바이트 코드로 변환하는 것과 정확히 얼마나 일치합니까? 내 말은, 물체가 어떻게 번역되는거야?객체 지향 코드는 어떻게 기계어 코드로 변환됩니까?
절차 적 프로그래밍에서 실제로 기계 언어로 함수를 실제로 지원하기 때문에 컴파일 후 어떻게 보이는지 분명합니다. 그러나 oop 프로그래밍의 경우 기계 언어로 된 객체가 없습니다.
내 이론은 데이터 (멤버 함수가 없음) 만 포함 된 struct와 같은 일종의 C로 개체 자체를 컴파일한다는 것이고, 멤버 함수가 호출 될 때 개체의 데이터 구조체 인 addional 매개 변수를 받아들이면 그 자체. 내가 맞습니까?
그리고 C++ 케이스는 어떻습니까? 둘 다 결국 같은 구조 또는 메모리 레이아웃을 봐야합니까? 이를 수행하는 방법은 여러 가지가있을 수 있습니다. 예를 들어 함수와 함께이 구조체를 가질 수도 있기 때문에 객체가 같은 함수를 ans 이상으로 복제하면 더 많은 메모리를 소비하기 때문에 가능성이 희박합니다. – UnTraDe
"hallo world"C 프로그램을 작성하십시오. gcc -o hw hw.c로 컴파일하십시오. objdump -d hw를 발행하십시오. 같은 이야기입니다. 변경된 사항은 도구 이름과 특정 지침입니다. IOW 대상 CPU가 다릅니다. NET에서 가상, C++에서 실제. –