2012-06-26 3 views
0

프로그래밍 언어가 "사양"(예 : Integer : 4 바이트, String : 8 바이트)을 알기 위해 클래스 정보 (예 : Objective-C 2 바이트)를 저장해야하는 것은 절대적으로 필요합니까? ; ...)의 object?
다형성 때문에 프로그램에서 객체가 올바른 (메서드, 메시지의 경우) type인지 여부를 런타임에서 확인해야합니다.
많은 자원을 소비합니까? 주로 당신은일반적으로 OOP - RAM에있는 클래스 정보

답변

1

꼭 필요합니다. 클래스의 객체 (즉, 참조)는 RAM에 저장됩니다. 아주 작은 번호를 사용합니다. f 바이트는 메모리를 저장하기 때문에 주소는입니다.

확인은 런타임 중에 수행되지 않고 컴파일하는 동안 수행됩니다. 메모리를 추가로 사용하지 않습니다. 클래스, 메소드를 작성해도 메모리 사용량은 증가하지 않지만 (약간만있는 경우) 컴파일 시간이 늘어납니다. 데이터 (객체/참조, 숫자, 문자열 등)를 저장하면 메모리가 사용됩니다. 개체를 만들 때만 언어 시스템이 메모리를 할당하고 사용합니다.

+0

그러나 어떻게 데이터가 참조 뒤에 구축되는지 프로그램을 알고 있습니까? "Something"은 객체 또는 클래스 풀의 추가 클래스 정보를 포함하여 객체를 식별해야합니다. –

+0

d 프로그램에는 알 필요가 없습니다. 모든 것이 잘되고 잘못된 메소드 호출이나 잘못된 참조 (또는 객체)가 없다는 것을 컴파일러가 검사했습니다. – vedant1811

0

이 절대적으로 필요

번호

예를 들어, 기본적으로 C++하지 않는가요 ... 적절한 구조를 유지하기 위해 더 많은 클래스를 생성하기 때문에 모든 유형 정보를 저장하십시오. 각 객체는 단순히 가상 함수 호출을 구현하기 위해 pointer to a table of function pointers을 저장합니다.

기본적으로 C++에서 모든 유형 검사는 컴파일 타임에 수행됩니다. 실행 시간 유형 확인이 필요하므로 유형 정보가 객체에 저장되도록 dynamic_cast과 같은 "흥미로운"작업을 시작하면 변경됩니다.

+1

하지만 : 객체를 식별하는 "무언가"를 저장합니다 ... –

+0

@LucaNateMahler : 네,하지만 질문에 대한 질문이 아닙니다. "런타임에 객체의 유형이 올바른지 확인"하는 데 사용되지 않습니다. –

+0

그래서 우리는 OOP가 기본 언어를 가진 언어보다 더 많은 메모리를 낭비한다고 분명히 말할 수 있습니다. –