https://stackoverflow.com/questions/4117002/why-can-i-access-private-variables-in-the-copy-constructor


요약 : 접근 지정자는 object 수준이 아닌, class 수준에서 이뤄지며 그 이유는 같은 클래스의 다른 객체로 해야할 작업이 많기 때문.


간단히 생각해보면 이미 구현의 세부사항을 조작하고있는데 구현부를 숨길 이유는 전혀 없지 않은가..


테스트 코드 :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
using namespace std;
 
class CTest
{
public:
    CTest(int n) : data(n) {
 
    }
    int sum(const CTest& n)
    {
        return data + n.data;  //n의 private 접근 가능
    }
private:
 
    int data;
};
 
int main()
{
    CTest val1(3);
    CTest val2(5);
 
    val1.sum(val2);    // return : 8
 
}
cs