c++ private 문의
글쓴이: osam5353 / 작성시간: 목, 2018/02/08 - 7:06오전
class A {
private:
int a = 4;
void print() {
cout << "test " << a;;
}
public:
void test(A *a) {
a->print();;
}
};
class B {
public:
void test(A *a) {
a->print();
}
};
int main() {
A *a = new A;
A *b = new A;
B *c = new B;
a->test(b); ==> 에러 아님
c->test(b); ==> 에러
return(0);
};안녕하세요 c++을 배우고있는 처버입니다
코드에서 c->test() 는 A class print() 함수가 private 멤버이기 때문에 에러가 발상하는게 맞는데
a->test(b) 에서는 b의 print() 함수가 private 멤버임에도 이상없이 컴파일 되네요 같은 class 에서는 private 멤버도 콜할수 있는건가요?
고수님들의 답변 부탁드립니다
Forums:


C++ 에서 private 과 public 차이점은
C++ 에서 private 과 public 차이점은 공부해 보시면 될 거 같은데요?
세벌 https://sebuls.blogspot.kr/
자기자신 인자로 받을경우는 private멤버도 접근이
자기자신 인자로 받을경우는 private멤버도 접근이 가능하네요
private,public,protect 개념을 다시 잡으시면 될듯~
위에 세 개념은 아주 기본이니 반드시 짚고 넘어가세요~
https://stackoverflow.com
https://stackoverflow.com/questions/6921185/why-do-objects-of-the-same-class-have-access-to-each-others-private-data
해석해 보면,
"접근지정자는 class 단위이며 instance 단위가 아니라서 가능합니다."
자의적으로 해석해 보자면,
class A{
friend A;
}
자기자신을 friend 로 선언한 구문이 생략되어 있다고 보면 되지 않을까요 ?...
댓글 달기