2013-02-21 2 views
0

클래스의 '객체'는 일반적으로 비공개 멤버에 액세스 할 수 없다는 것을 알고 있습니다. 그러나 복사 생성자의 함수 정의에서 객체를 사용하여 private 멤버 멤버에 액세스합니다. 어째서? 예 : -클래스의 액세스 지정자

class Sample {int i,j; 
public: 
Sample(int a, int b) 
{i=a;j=b;} 
Sample(Sample &S) 
{j=s.j;i=s.i;} 
} 

답변

0

동일한 클래스입니다. 다른 인스턴스는이지만 동일한 클래스입니다.

private은 구성원이 다른 인스턴스를 포함하여 클래스 내에서만 볼 수 있음을 의미합니다.

+0

아직 확실하지 않습니다 ... "s.j"를 사용할 수있는 방법을 묻습니다. 's'는 클래스 개체이고 'j'는 개인 데이터 멤버이고, 개체는 개인 멤버에 액세스 할 수 없다는 규정이 있습니다. – vpp

+0

@vpp - 그건 규정이 아닙니다. 'private '은 선언하는 _class_ 안에서만 멤버가 액세스 할 수 있음을 의미합니다. _same_ 클래스의 다른 객체는 두 클래스의 private 멤버에 액세스 할 수 있습니다. – Oded

+0

@ Oded- "클래스 샘플 {int i;}; 샘플 s". 이제 클래스 외부에서 's.i'를 사용하면 오류가 발생하지만 클래스 내부에서 사용하면 오류가 발생하지 않습니다. 그렇습니까? – vpp

관련 문제