与复制构造函数和私有成员混淆

use*_*199 0 c++

假设我有以下课程:

class Test
{
             int num;
     public:
             Test(int x):num(x){}
             Test(const Test &rhs):num(rhs.num+1){}
};

int main()
{
      Test test(10);
      Test copy = test;
}
Run Code Online (Sandbox Code Playgroud)

num在副本应该是11,我的问题是关于拷贝构造函数里面,我们为什么不能访问私有成员numtest使用num来初始化num的副本?令我困惑的是,如果你输入cout<<test.num<<endl,当然这是错的,因为你试图访问私有num,但如果你通过参考复制构造函数传递测试,它可以工作,任何人都可以告诉我这里发生了什么?

小智 5

私有成员对类本身是私有的,而不是类的实例.