Initialization하면 vs 같은 컴파일러는 선언하는 순간 MOV EAX,0으로 초기화 될껄
익명(49.1)2022-07-18 01:45
답글
답변 감사합니다!!
익명(175.193)2022-07-18 01:48
노노. 초기식과 초기식+할당식은 다름
컴파일러 입장에서는 최적화 여지가 있겠지만 어디까지나 언어적인 개념의 접근이 필요하므로 언어 레벨에서 설명 해주겠음
하나의 클래스가 있고 객체를 선언과 동시에 대입을 하게되면 명시된 생성자가 호출됨.
만약 선언을 먼저 하고 대입을 그후에 하면 알다 싶히 클래스는 디폴트 생성자를 가지고 있는데, 디폴트 생성자가 호출이 되고 대입 시점에 대입에 맞는 생성자가 발생함. 즉 그 과정에서 쓸대없이 디폴트 생성자가 호출되는 오버헤드가 발생함. 대부분의 상황에서야 무시할만 하겠지만 반복성이 짖은 함수라던가 클래스 크기가 더럽게 클 경우에는 유의미한 오버헤드를 초래할수도 있음
익명(125.143)2022-07-18 03:36
답글
Class is Type이니 Int와 같은 별거 없는 기본형 Type이 아닌 Class을 Type으로써 사용할때 문제점이 발생한다는 소리
Initialization하면 vs 같은 컴파일러는 선언하는 순간 MOV EAX,0으로 초기화 될껄
답변 감사합니다!!
노노. 초기식과 초기식+할당식은 다름 컴파일러 입장에서는 최적화 여지가 있겠지만 어디까지나 언어적인 개념의 접근이 필요하므로 언어 레벨에서 설명 해주겠음 하나의 클래스가 있고 객체를 선언과 동시에 대입을 하게되면 명시된 생성자가 호출됨. 만약 선언을 먼저 하고 대입을 그후에 하면 알다 싶히 클래스는 디폴트 생성자를 가지고 있는데, 디폴트 생성자가 호출이 되고 대입 시점에 대입에 맞는 생성자가 발생함. 즉 그 과정에서 쓸대없이 디폴트 생성자가 호출되는 오버헤드가 발생함. 대부분의 상황에서야 무시할만 하겠지만 반복성이 짖은 함수라던가 클래스 크기가 더럽게 클 경우에는 유의미한 오버헤드를 초래할수도 있음
Class is Type이니 Int와 같은 별거 없는 기본형 Type이 아닌 Class을 Type으로써 사용할때 문제점이 발생한다는 소리