객체 인스턴스화: 'new' 대 'new'가 아닌'
메모리 할당 외에도 다음 줄 사이에는 어떤 기능적 차이점이 존재합니까? 코드?
1 2 3 |
|
비'새' 인스턴스화
첫 번째 줄인 Time t (12, 0, 0);는 로컬 범위에서 Time 유형의 변수 t를 생성합니다. 이 변수는 일반적으로 스택에 할당되며 해당 범위의 끝에서 삭제됩니다.
'new' 인스턴스화
반면, 두 번째 줄 Time* t = new Time(12, 0, 0);, 일반적으로 ::operator new() 또는 Time::operator new()를 통해 힙에 메모리 블록을 할당합니다. 기능. 그런 다음 이 메모리 블록은 새로 할당된 메모리의 주소가 this 포인터로 설정된 Time::Time() 생성자를 사용하여 초기화됩니다. 할당된 메모리에 대한 포인터는 변수 t에 저장됩니다.
기타 차이점
주요 차이점은 메모리 할당에 있지만 몇 가지 미묘한 차이점이 있습니다.
위 내용은 `new` 대 `new`가 아닌 객체 인스턴스화: 주요 기능적 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!