본문 바로가기

프로그래밍/C++

[C++]클래스와 구조체

C++로 넘어오면서 struct와 class는 그 역할이 매우 동등해졌다.
실제 동작면에서는 그렇다.
( 아니 확인해보지는 못했다. C와 같이 struct의 변수들은 주소공간에 차례차례 배치되어 있는지 ? )
단지 차이가 있다면 struct는 기본적으로 필드가 public이고
class는 기본적으로 필드가 private랄까.

아무래도 C 스타일에서 주로 쓰던 struct의 형태로
C++에서도 사용하게 되었다.
필드마다 Get, Set을 사용하기 싫을 때 struct를 애용하였다.
struct에는 별다른 함수를 지니려고 하지 않았고,
다만 생성자와 소멸자는 간간히 쓰는 편이었다.
좀 필드가 많아질 가능성이 보이면 class로 바꾸는 행태를 보이곤 했다.

오늘 하나의 클래스에 구조체를 만들고
구조체에 기능을 확장하다 클래스를 만들고
클래스를 만들다보니 너무 기능이 확장되서 다시 원 클래스에 합병하고
다시 구조체를 만들고..
이런 루프를 한 번 돌다보니 struct와 class의 의미상 역할을 생각해보게 되었다.

단순히 필드를 함수로 호출하느냐 직접 호출하느냐의 차이는 아닐 것이다.
오늘 생각하건데 역시 클래스의 본질은 숨기기가 아닌가 싶다.
사실 클래스의 사용자 입장에서 필드는 가능하면 존재자체도 숨겨야한다.
필드의 내용을 이용해서 무언가 할 일이 있다면 필드를 직접 보여주는 것이 아니라
모두 클래스 안으로 끌어들이는 것이 합당할 것이다.
그리고.. 구조체는.. 필드의 내용도 공개하고 그 필드를 적절히 가공까지 해주는 역할을 맡는 게 옳을 듯하다.

왠지 써놓고보니 당연한 말을 지껄인 듯한 기분이다.

'프로그래밍 > C++' 카테고리의 다른 글

단일체  (8) 2006.03.08
Java의 Package  (0) 2006.02.22
[C++]예외 처리  (0) 2006.02.03
여기서 교과서적인 이야기 하나.  (3) 2005.08.10
물체로 알아보는 객체 지향 1  (1) 2005.07.19