반응형
사실상 객체지향에서 말하는 struct와 class의 차이는 명확하다.
하지만 이따금씩 C++을 많이 접해보지 못한 프로그래머들에겐
화제거리가 되곤 하는데 이는 C++만이 가진 모호한 객체지향성 때문인거 같다.
가령 C#이나 Java 두 언어에서 보여지는 Struct와 Class의 차이는 아주 명확한데,
Struct는 기본적으로 value copy가 이뤄지는 데이터 타입이며
Class는 반대로 reference copy가 발생하는 객체 타입이라는 것이다.
실제로 코딩을 할때도 Struct와 Class를 다루는 코딩 방식이 판이하기 때문에 조금만 접해봐도 그 차이를 체감 할 수 있다.
하지만 C++은 Struct와 Class의 차이가 거의 없다.
차이라곤 딱하나가 있는데 기본 한정자가
Struct의 경우에는 public:으로 설정되어 있고
Class의 경우 private:으로 되어 있다는 것이다.
메소드 , 가상 메소드 , 순수 가상 메소드 모두 지원한다.
또 Struct를 상속하는 Class가 가능하고 Class를 상속하는 Struct 또한 가능하다.
실제로 Struct가 public:으로 기본 한정자가 잡혀 있는 것을 이용해 다른언어에서 지원하는 Interface로서 활용하는 경우도 심심치 않다.
많은 책에서는 혹은 대학 강의에서는 이러한 이슈를 명확하게 다루지 않는다. 사실상 이슈라고 할만큼 크리티컬 하지 않기도 하다.
이러한 모호함이 객체지향을 접하는데 마이너스 요소라고 생각하는 것 같다.
반응형
'DEV > C++' 카테고리의 다른 글
[STL] cout에서 실수형 데이터의 지수표현법 막기 (0) | 2015.03.13 |
---|---|
[STL] cin, getline 사이에 twice enter issue (0) | 2015.03.10 |
[Keyword] explicit, 암시적 형변환 피하기 (0) | 2015.02.21 |
[OOP] c++ 에서의 상속에 관한 키워드 (0) | 2015.02.18 |
[STL] set iterator의 const issue (0) | 2015.01.28 |