구조체와 클래스는 언어별로 구현 방식의 차이가 있습니다.
.Net 계열은 값(스택)과 참조(힙)라는 차이가 있고 C++은 둘의 차이가 거의 없습니다.
C++은 C와의 호환을 위한 구조체로 없어도 그만이죠.
제 경우도 FastASM에 .Net과 같은 방식으로 구조체와 클래스를 구현 했습니다.
어셈블리의 최대 장점인 성능을 희생하지 않기 위해 오버로딩, 오버라이딩, 함수 상속은 제외했습니다.
클래스이지만 변수만 상속되는 제한된 클래스인 것이죠.
생각해보니 구조체는 이미 변수 상속을 지원하고 있었는데 거기다 함수까지 포함시킨게 전부더군요.
그걸 구조체는 스택, 인라인에 존재하게 하고 클래스는 힙에 메모리 생성해서 존재하게 했던 것이죠.
구조체에 함수 지원만 추가 하는 거라면 괜히 성능에 부담만 주는 힙에 있어야 할 이유가 없는데 클래스는 항상 힙에 존재해왔기에 별 생각없이 저 또한 그러고 있었네요.
오늘 밤은 클래스를 힙에서 스택으로 보내야 겠네요.