2009-08-08 6 views

답변

61

C++는 C의 상위 집합으로 도입되었습니다. 구조체는 C에서 가져 오며, 여기서 구성원의 의미는 공개 된 것입니다. 구조체를 사용하는 C++로 작업하기를 원하는 라이브러리를 포함하여 전체적으로 많은 C 코드가 존재합니다. 클래스는 C++에서 도입되었으며 캡슐화의 OO 철학을 준수하기 위해 멤버는 기본적으로 비공개입니다.

+0

음, 캡슐화가 모든 구성원에게 개인적으로 꼭 필요한 것은 아닙니다. C++ 인라이닝을 사용하면 액세서 메소드가 매우 저렴해질 수 있지만 함수 호출의 오버 헤드가있는 많은 OOP 언어에서 사람들은 공용 액세스를 저렴하게 사용하는 경향이 있습니다. 좀 더 세밀하게 제어하기 위해 lang이 속성을 지원하면 속성 선언을 사용할 수 있습니다. 그러나 네이티브 코드에서 변수 변경 내용을 추적하는 것이 관리되는 언어보다 어렵 기 때문에 코드에서 단일 지점을 통해 특성을 설정하는 것이 좋습니다. – progician

1

아마도 C 구조체와의 하위 호환성 때문일 수 있습니다. C 코드로 선언 된이 구조체는 C++ 코드에서 사용될 때와 같은 방식으로 계속 작동합니다.

7

클래스는 객체 지향을 수행하는 일반적인 방법이기 때문에 멤버 변수는 private이어야하며 공용 접근자가 있어야합니다. 이는 low coupling을 만드는 데 유용합니다. 반면 구조체는 항상 public 인 C 구조체와 호환되어야하며 (C에서는 public 및 private의 개념이 없음) 접근 자/변형자를 사용하지 않아야합니다.

관련 문제