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