구조체는 값 형식이고, 클래스는 참조 형식이다.
구조체는 스택 할당이고, 클래스는 힙 할당이다.
2-1. 구조체는 가비지 컬렉션의 대상 밖이다.
구조체는 상속할 수 없고, 클래스는 할 수 있다.
3-1. 구조체 요소는 protected로 선언될 수 없다.
구조체의 기본 한정자는 public이고, 클래스는 private이다. 한정자를 지정하지 않는다면 기본 한정자로 선언한 것으로 간주된다.
구조체는 매개변수 없는 기본 생성자를 선언할 수 없다.
재미있게도, C++의 경우에는 둘 사이의 차이가 거의 없다고 한다.
둘의 차이는 기본 한정자가 구조체가 public, 클래스가 private인 정도로, 구조체가 상속도 가능하고 클래스와 차이가 없다고 한다. 구조체에 함수 포인터를 더한 게 클래스일 정도라고.
C++에서 이 둘을 나눠쓰는 것은 OOP를 추구하기 위한 코딩 스타일이라고 받아들이면 될 것 같다.