cpp에서 동일한 클래스간에는 private부분도 직접 참조 가능한가
글쓴이: philossh / 작성시간: 금, 2005/08/12 - 10:29오후
아래처럼 동일한 클래스간에는 private로 선언되었더라도 직접 엑세스가 가능한지??
class A { private: int data; ... public: ... void func(A& a); }; void A::func(A& a) { a.data = data; } void main() { A a, b; a.func(b); .. }
VC .NET에서는 되는 듯 한데..
이런식으로 원래 가능한건 가요??
저는 a.set(data); 이런식인 줄 알았는데..
대충 공부한게 탈인건지.. :cry:
Forums:
음.. 자기 집안에 있는 컴퓨터를 본인이나 친구도 사용하지 못하면
음..
자기 집안에 있는 컴퓨터를 본인이나 친구도 사용하지 못하면 아무도 쓸 수 있는 사람이 없겠지요?
어린이라는 클래스와 어른이라는 클래스가 있을경우..어린이 클래스와 어
어린이라는 클래스와 어른이라는 클래스가 있을경우..
어린이 클래스와 어른클래스가 각각 일기장이라는 자기만 쓰는것이 있습니다.
어린이 A, B 어른 C라는 인스턴스가 있을경우..
A가 C를 두들겨 패도.. 서로의 일기장은 비밀이 유지되지만..
(A.func(어른& C) 일경우 A는 C의 일기장을 쓸수 없음..)
A가 B를 두들겨 팬경우.. A가 B의 일기장에 낙서를 할 수 있음..
(A.func(어린이& B) 일경우 A는 B의 일기장을 쓸수 있음..)
저의 질문은 이런거였는데.. :oops:
To be or not to be.
That is the question.
어린이들끼리는 굳이 두들겨패지 않아도 서로의 일기장을 보고 쓸 수 있습니
어린이들끼리는 굳이 두들겨패지 않아도 서로의 일기장을 보고 쓸 수 있습니다.
* 혹시 뭐 스트레스 받으시는 일이라도...? :shock:
[quote="doldori"]어린이들끼리는 굳이 두들겨패지 않아도 서로
흠..
어린이 클래스와 어른클래스를 바꾸도록 하겠습니다.. :roll:
스트레스라... 옆구리가 너무 시려요~ :cry:
To be or not to be.
That is the question.
a.data = data;이 문장에서 data 항은 접근 가능할
a.data = data;
이 문장에서 data 항은 접근 가능할 것 같은데,
a.data 항은 이용할 수 없을 것 같군요.
[quote="Anonymous"]a.data = data;이 문
비유로 돌려서 말을 한 것이 화근이군요.
이 문장은 적법합니다. A 클래스의 모든 개체는 A 클래스의 모든 멤버에
접근 가능합니다. this->data건 a.data건 상관없이요.
그런데 잘 컴파일 되네요.
그런데 잘 컴파일 되네요.
[code:1]class 남자{private:
-_-;;;;
Re: cpp에서 동일한 클래스간에는 private부분도 직접 참조 가능
* 제가 실수 혹은 무지로 잘못 쓴 부분들이 워낙 많군요; 아이고 죄송합니다. 아랫 분들의 글들을 참조하시길 바랍니다. (쪽팔려서 내용은 슥 -_-)
- 토끼군
Re: cpp에서 동일한 클래스간에는 private부분도 직접 참조 가능
잘못 알고 계시네요.
C++에서는 (java도 마찬가지일듯) 접근제한(private과 같은)이 object단위가 아니라 class단위입니다.
따라서 같은 class에 속하는 객체(instance)라면 서로 다른 객체의 멤버변수를 참조/수정할 수 있습니다.
Re: cpp에서 동일한 클래스간에는 private부분도 직접 참조 가능
표준 문서에서 객체를 class로 표현했을 땐 instance와 확실히 구분됩니다. 즉 같은 class의 private 변수라면, 그것이 다른 instance의 변수라고 해도 접근할 수 있는 것입니다.
착오를 하신 모양이네요. friend 선언은 instance 단위가 아닌 class 단위로 이루어지는데 그걸로 어떻게 접근을 허락해야하는지 불허해야하는지 구분하겠어요. ;)
헉. friend 얘기를 저기서 왜 했지.... -_-;;; 제 실수입니
헉. friend 얘기를 저기서 왜 했지.... -_-;;; 제 실수입니다. 그나저나 private/protected가 인스턴스 단위가 아니라 클래스 단위인 건 제가 미처 몰랐군요. 제 불찰입니다. orz
- 토끼군
[code:1]class CBase {};cla
음..
될것 같군요...
private 함수도 참조하는 방법이 있을것 같은데...
WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra
[quote="tokigun"]헉. friend 얘기를 저기서 왜 했지.
사실 모르기가 쉬운 것 같아요. 그리고 상식적... 이라기 보다는 어떤 단어가 좋을지는 모르겠지만 아무튼 그렇게 생각해 볼 때 object 단위로 생각하는 것이 자연스러워서...
아는 바로는, Java도 class 단위입니다~
@ 토끼군, 잘 지내는감? 궁금하구나!
....
java 는 클래스 단위 가시성이 아닙니다..
그것이 자바와 C++ 을 구별하게 해주는 또 한가지의 차이점이죠.
의외로 두개 언어의 차이점을 잘 인지못하시고 사용하는 분들이 많이 계시더군요...
Re: ....
음. 그렇다면 자바는 private이면 같은 class더라도 다른 instance이면 접근할 수 없나요?
Re: ....
당근빠따 말밥입니다! ^^
이제부턴 자신있게 말합시다!
Re: ....
아닙니다. 자바 역시 C++과 마찬가지로 class 단위 가시성입니다.
아래 코드 컴파일해세요.
[/code]이런 참조도 혹시 참조로 껴주실래요???...^_^;;
class CTest
{
public:
CTest() {
m_nData = 0;
}
int GetData() { return m_nData; };
void SetData(int nData) { m_nData = nData;};
private:
int m_nData;
};
int _tmain(int argc, _TCHAR* argv[])
{
CTest tst;
int x = 0;
cout memset(&tst, 1, 1);
cout
tst.SetData(10);
cout memcpy(&x, &tst, 1);
cout return 0;
}
참조는 참조입니다... ;;; 대략 난감하지만..;;
할롱~ ^_^)/
글쓰는 장소가 좀
글쓰는 장소가 좀 엄하기는 합니다만..
SPAM 모듈이 리소스를 너무 많이 차지한다면
차선책으로 captcha은 어떨까요.
어찌어찌 운영진 귀에 들어갈 것으로 기대하면서 소심하게 써봅니다.
음... 사용자
음... 사용자 등록시에만 쓸 수 있는 것인 줄 알았는데 답글에도 쓸 수 있군요! 좋은 정보 감사합니다. 확인해 보고 적용하도록 하겠습니다.
지금 확인해 보니
지금 확인해 보니 4.6.5에서 사용하려면 패치가 필요한데 아직 제대로 된 패치가 없는듯 합니다. 4.7로 업그레이드하면 적용토록 하겠습니다. 감사합니다...
오~ 읽으셨군요~..
오~ 읽으셨군요~.. 감동받았습니다.
4.6.5에서 안되는건 몰랐네요.. 빨리 4.7이 릴리즈 되었으면 좋겠습니다.
목이 빠져라 기다리고 있어요
그런데 참
그런데 참 궁금합니다. 어찌 이 글타래에만 계속 스팸이 달리는 걸까요? 궁금하네...
댓글 달기