class human
{
private :
int age;
public :
human(int a)
{
age = a;
}
void ShowAge(human H)
{
cout<<H.age<<endl;
}
}
int main(void)
{
human a(10), b(20);
a.ShowAge(b);
}
이거 왜 되는건지 모르겟음 안되야할거같은데
age가 private이니까 메인 a.ShowAge(b) 에서 b.age에 접근이 불가능해야하는거 아닌가???
메소드가 public이니까 메인에서 호출이 가능하고, 원래 메소드는 멤버변수에 접근할수있는 동일 클래스기준
a.age=10;이라고 직접 메인에서 손을 댄 것이 아니라 메소드(자신의 팔)를 이용해서 자신의 꼬추(멤버변수)를 만진거니까 가능함
잘생각해보면 그런식이면 복사생성자 자체가 말이 안됨
그리고 객체기준이 아니라 접근범위는 클래스기준임
객체랑 클래스랑 다시 생각해보셈 은닉이 객체에서 일어나는건지 클래스에서 일어나는건지
와 ㅁㅁ 병장초봉 고마워요 단번에 이해했음!