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 로 선언한 구문이 생략되어 있다고 보면 되지 않을까요 ?...
댓글 달기