입니다 무엇보다도 호기심 ... 다음과 같이 컴파일러는 C++ 클래스의 메서드를 어디에 저장합니까?
한다고 가정
가 나는 C++ 클래스 키티가 있습니다class Kitty
{
void Meow()
{
//Do stuff
}
}
키티의 모든 인스턴스() 야옹에 대한 코드를 컴파일러 자리를합니까?
분명히 모든 곳에서 동일한 코드를 반복하면 더 많은 메모리가 필요합니다. 그러나 다른 한편으로는 가까운 메모리의 상대 위치로 분기하는 것은 현대 프로세서의 메모리에서 절대 위치로 분기하는 것보다 더 적은 어셈블리 명령어를 필요로하기 때문에 잠재적으로 더 빠릅니다.
이것은 구현 세부 사항이라고 생각합니다. 따라서 다른 컴파일러가 다르게 수행 할 수 있습니다.
여기에 정적 또는 가상 메소드를 고려하지 않습니다.
일반적으로 알려진 질문에 대한 답을 얻기 위해 준비하십시오 (+1해도 좋은 질문입니다 :). –
명확히하기 위해 인라인에 관심이 없습니다. 나는 그것이 어떻게 작동하는지 알고있다. – Mashmagar