♥ 모디안에 오신걸 환영합니다. ♥
{M:4/G:31}
개발자 코너


  ( 2004-11-15 21:53:37 , Hit : 9206
 http://blog.naver.com/blackh0303.do
 [C++ 질문]클레스 상속시에 protected 와 private 의 차이는?

제가 C++ 을 대충 훑어보고 MFC 짜면서 C++ 의 구조를 막무가내로 익히는 바람에^^

클래스 상속받을때 무조건 public 으로 놓거나 아니면 private 로 해놓은다음 컨트롤 함수를

쓰긴 했지만 요놈은 protected 는 뭐하는건지 아직도 감이 잘 잡히지 않습니다.

아참.. 상속받을때...

class A : public B

뒤에 public 으로 받는건 알겠는데 다른방식으로 받으면 뭐가 틀린가요?

책 뒤져보면 단박에 나오겠지만^^ 쉽게 이해하신분들의 조언을 구하려고 끄적거려 봅니다^^;;(결국 귀차니즘;;)



風瓦異 (2004-11-15 23:30:20)  
protected는 그 클래스에서 상속된 애들에게만 보입니다.
private돠도 다르고public과도 다른 셈이죠.
김이랑 (2004-11-16 13:14:41)  
음 너무 복잡하게 생각하지 마세요.
위의 예제를 들어 간단히 설명 드리겠습니다.위에서 ...

class A : public B 또는 class A : private B

라고 설명된 부분을 살펴보겠습니다.
이는 클래스의 멤버를 내부적으로만 사용할건지 아니면 외부에서도
사용할수 있도록 할건지를 가리킵니다. 즉 어떤 형태로 상속할건지를
가리키는 것이지요. private 라고 선언하면 내부적으로만 사용하겠다는 의미이며
public 로 선언하면 외부에서도 사용할수 있도록 허용하겠다는 의미입니다.
정리하면 다음과 같습니다.
1. public 으로 상속하면 외부함수가 클래스의 public 멤버를 참조할수 있다.
2. private 으로 상속하면 외부함수가 클래스의 public 멤버를 참조할수 없다.
라고 정리할수 있겠지요.

다음 private 와 protected 에 대해 살펴봅시다.
이는 클래스의 전용영역을 좀더 세분화하여 정의하고자 할때 사용한다고
생각하시면 되겠는데요.이 두가지는 접근을 제한하는 객체들의 범위에서
차이를 가지고 있다고 보시면 되겠네요.
1.private 영역은 자신이외에는 어떠한 객체도 접근할수 없는 영역을 의미하며
2.protected 영역은 직계자손만 접근을 허용하는 영역이라 보면 될듯 합니다.
즉 이 두가지는 어떤 객체이든 자신을 상속하는 객체와 자신을 상속하지
않는 객체를 구별하겠다는 의도에서 사용된다 보시면 되겠습니다.

뭐 구분은 이렇게 되어 있기는 하지만 저의 경우도 막상 프로그램 작업시에는
이러한 구분을 세부적으로 가리지 않고 protected 를 사용해 버린답니다.
(2004-11-18 02:00:45)  
^^ 감사합니다... 그러니까 protected 로 하면 상속받은 클래스에서도 상속해준 클래스의 protected 부분은 건드릴 수 있는거군요.... private 보다는 편하겠습니다
(2004-11-28 19:46:55)  
C++공부하겠다고 맘먹고 시작했는데, 내년2월달에 보는 편입공부 핑계로 자꾸 손이 안가네요... -_-a
Bluecube (2005-02-03 11:48:29)  
아 그러고 보니 저도 protected 개념을 제대로 모르고 있었네요 -_-;; 그냥 막무가네로 public 과 private 의 중간개념이다 -_- 정도로만 알고 있었어요. 좋은답변 감사합니다. ^^




38   아 잘안되네요  김승원 2008/11/19 6023
37   hpc2000 sdk 어디서 구해야 할까요? [3]  june2 2007/06/19 6836
36   개발자님들 건의사항입니다 [2]  정의성 2007/01/05 7271
35   모디아용 프로그래밍 [2]  전종현 2007/01/02 8021
34   evc 4.0에서 hpc2000 SDK로 모디아... [1]  고구마 2006/06/16 8074
33   기능상의 질문 [4]  yys1211 2005/06/09 8232
32   개발 관련 질문있어요 ^^ [3]  지영승 2005/05/09 8107
31   프로그램 테스트(디버그 포함)시.. 속도향상... [2]   2005/03/02 8616
30   공개키 알고리즘과.. 대치방식알고리즘 [6]   2005/02/08 8575
29   타자연습 프로그램 개발 착수 [12]  Bluecube 2005/02/03 9402
28   인사드립니다 ^^ ㅎㅎ [1]  Bluecube 2005/02/03 7975
27   ms사이트에서 아무리 찾아도 hpc SDK는 없네... [4]  myBrainisOpen 2005/01/22 8459
26   [C++ 질문]파일끝을 잘라버리는 함수는 없... [4]   2004/12/17 8353
  [C++ 질문]클레스 상속시에 protected 와... [5]   2004/11/15 9206
24   [질문][C++]사용자 정의 함수에 대한 질문... [6]   2004/11/04 8417
23   이 게시판이 프로그래밍 스터디그룹으로도 쓰... [2]   2004/11/04 8610
22   HPC용 UDP 메시지 전송 컴포넌트 입니다....  김이랑 2004/10/29 8524
21   WinCE 프로그래밍 입문자를 위한 글  김이랑 2004/10/19 18745
20   첫 모디아 프로그램 시험성공 ... [3]  김이랑 2004/10/18 10087
19   모디아에서 NetBSD 설치에 대한 고찰 ... [10]  김이랑 2004/10/13 9517

1 [2]
 

Copyright 1999-2018 Zeroboard / skin by ROBIN Modify by Netzzi.com