구조체 vs 클래스
- 어셈블리 내에서는 구조체와 클래스가 같은 데이터 그룹일 뿐이라서 컴퓨터가 구분 못함 그러나 컴파일러는 구분 함.
- 구조체 기본 접근권한 : pubilc
- 클래스 기본 접근권한 : private
- 둘의 차이점은 없다, 컴파일러 입장에서는 둘의 차이점을 모른다
- 함수를 넣어야 한다면 무조건 클래스로 만들어야 한다.
- C++에서는 구조체를 클래스처럼 쓸 수 있음 하지만 절대 그러지 말 것. 구조체는 C스타일로 사용하는 것을 권고
struct는 순수하게 데이터뿐이여야 함.
- 사용자가 선언한 생성자나 소멸자X
- static아닌 private/protected 멤버 변수 X
- 가상 함수 X
- POD(Plain Old Data : int, float, char)만 두어서 메모리 카피 가능하게끔 만들자
- memcpy()를 사용하여 struct를 char[]로, 혹은 반대로 복사할 수 있음.
- 포인터나 참조형같은 데이터를 두어서 deep copy 문제를 일으키면 그것은 구조체로 만들어서는 안된다.
- 그래서 struct 안에는 class가 있으면 안되고 같은 성질을 가진 struct만 둘 수 있다.